diff options
| author | lectio <lukasz@arcofasiagroup.com> | 2026-07-28 22:07:21 +0200 |
|---|---|---|
| committer | lectio <lukasz@arcofasiagroup.com> | 2026-07-28 22:07:45 +0200 |
| commit | 42fd9a69fa2bc9ef11c65c169a58ff40c9cb0fa1 (patch) | |
| tree | eb135eae4d3374973c08b27956a6e067a95e56bc /gen/liturgy_ef.h | |
| download | clectio-42fd9a69fa2bc9ef11c65c169a58ff40c9cb0fa1.tar.gz clectio-42fd9a69fa2bc9ef11c65c169a58ff40c9cb0fa1.zip | |
clectio: tiny suckless C daily readings, all readings compiled in
clectio prints the Catholic liturgical day and its Mass readings for a date
with a single table lookup -- no computation, config file, network, or deps
beyond libc. The calendar, reading citations and scripture text are all
compiled in; the whole shipped package fits on a 1.44 MB floppy (~1.29 MiB)
and the binary is ~0.9 MB (OF) / ~0.3 MB (EF).
- suckless config.h: FORM_OF/FORM_EF, SIGLA_ENGLISH/SIGLA_LATIN, COLOR.
- Bring your own Bible: `make CORPUS=mybible.tsv` recompiles with any
Vulgate-numbered 6-column TSV; only the ~12k cited verses are embedded.
- The hard liturgical logic stays in lectio (Go, oracle-validated); its
clectio-gen emits the corpus-independent tables in gen/. The scripture text
is LZSS-packed (lz.h) to fit; mktext/bin2h resolve+embed it at build time.
- Verified byte-identical to lectio's readings; day names match 157/157 over
a 3-year sample. Default text: public-domain Latin Vulgate. ISC-licensed.
Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
Diffstat (limited to 'gen/liturgy_ef.h')
| -rw-r--r-- | gen/liturgy_ef.h | 3353 |
1 files changed, 3353 insertions, 0 deletions
diff --git a/gen/liturgy_ef.h b/gen/liturgy_ef.h new file mode 100644 index 0000000..7e85c8c --- /dev/null +++ b/gen/liturgy_ef.h @@ -0,0 +1,3353 @@ +/* generated by clectio-gen -- do not edit */ +#ifndef LITURGY_EF_H +#define LITURGY_EF_H + +#define EPOCH_Y 2025 +#define EPOCH_M 1 +#define EPOCH_D 1 +#define NDAYS 10957 + +static const char *const names[] = { + "The Circumcision of the Lord", + "Thursday of Christmas", + "Friday of Christmas", + "Saturday of Christmas", + "0th Sunday of Christmas", + "The Epiphany of the Lord", + "Tuesday of the 1st Week after Epiphany", + "Wednesday of the 1st Week after Epiphany", + "Thursday of the 1st Week after Epiphany", + "Friday of the 1st Week after Epiphany", + "Saturday of the 1st Week after Epiphany", + "1st Sunday after Epiphany", + "Commemoration of the Baptism of the Lord", + "St. Hilary", + "St. Paul, the First Hermit", + "St. Marcellus I", + "St. Anthony", + "Saturday of the 2nd Week after Epiphany", + "2nd Sunday after Epiphany", + "Sts. Fabian & Sebastian", + "St. Agnes", + "Sts. Vincent & Anastasius", + "St. Raymond of PeƱafort", + "St. Timothy", + "Conversion of St. Paul", + "3rd Sunday after Epiphany", + "St. John Chrysostom", + "St. Peter Nolasco", + "St. Francis de Sales", + "St. Martina", + "St. John Bosco", + "St. Ignatius of Antioch", + "Purification of the Blessed Virgin Mary", + "Monday of the 5th Week after Epiphany", + "St. Andrew Corsini", + "St. Agatha", + "St. Titus", + "St. Romuald", + "St. John of Matha", + "5th Sunday after Epiphany", + "St. Scholastica", + "Our Lady of Lourdes", + "Seven Holy Servite Founders", + "Thursday of the 6th Week after Epiphany", + "Friday of the 6th Week after Epiphany", + "Saturday of the 6th Week after Epiphany", + "1st Sunday of Septuagesima", + "Monday of the 1st Week of Septuagesima", + "Tuesday of the 1st Week of Septuagesima", + "Wednesday of the 1st Week of Septuagesima", + "Thursday of the 1st Week of Septuagesima", + "Friday of the 1st Week of Septuagesima", + "Chair of St. Peter", + "2nd Sunday of Septuagesima", + "St. Matthias", + "Tuesday of the 2nd Week of Septuagesima", + "Wednesday of the 2nd Week of Septuagesima", + "St. Gabriel of Our Lady of Sorrows", + "Friday of the 2nd Week of Septuagesima", + "Saturday of the 2nd Week of Septuagesima", + "3rd Sunday of Septuagesima", + "Monday of the 3rd Week of Septuagesima", + "St. Casimir", + "Ash Wednesday", + "Thursday after Ash Wednesday", + "Friday after Ash Wednesday", + "Saturday after Ash Wednesday", + "1st Sunday of Lent", + "Monday of the 1st Week of Lent", + "Tuesday of the 1st Week of Lent", + "Wednesday of the 1st Week of Lent", + "Thursday of the 1st Week of Lent", + "Friday of the 1st Week of Lent", + "Saturday of the 1st Week of Lent", + "2nd Sunday of Lent", + "Monday of the 2nd Week of Lent", + "Tuesday of the 2nd Week of Lent", + "St. Joseph, Spouse of the Bl. Virgin Mary", + "Thursday of the 2nd Week of Lent", + "Friday of the 2nd Week of Lent", + "Saturday of the 2nd Week of Lent", + "3rd Sunday of Lent", + "Monday of the 3rd Week of Lent", + "Annunciation of the Blessed Virgin Mary", + "Wednesday of the 3rd Week of Lent", + "Thursday of the 3rd Week of Lent", + "Friday of the 3rd Week of Lent", + "Saturday of the 3rd Week of Lent", + "4th Sunday of Lent", + "Monday of the 4th Week of Lent", + "Tuesday of the 4th Week of Lent", + "Wednesday of the 4th Week of Lent", + "Thursday of the 4th Week of Lent", + "Friday of the 4th Week of Lent", + "Saturday of the 4th Week of Lent", + "Passion Sunday", + "Monday of Passion Week", + "Tuesday of Passion Week", + "Wednesday of Passion Week", + "Thursday of Passion Week", + "Friday of Passion Week", + "Saturday of Passion Week", + "Palm Sunday", + "Easter Sunday", + "Monday of the 1st Week of Easter", + "Tuesday of the 1st Week of Easter", + "Wednesday of the 1st Week of Easter", + "Thursday of the 1st Week of Easter", + "Friday of the 1st Week of Easter", + "Saturday of the 1st Week of Easter", + "Second Sunday of Easter", + "St. Paul of the Cross", + "St. Peter of Verona", + "St. Catherine of Siena", + "St. Joseph the Workman", + "St. Athanasius", + "Saturday of the 2nd Week of Easter", + "3rd Sunday of Easter", + "St. Pius V", + "Tuesday of the 3rd Week of Easter", + "St. Stanislaus", + "Thursday of the 3rd Week of Easter", + "St. Gregory of Nazianzen", + "St. Antoninus", + "4th Sunday of Easter", + "Sts. Nereus, Achilleus, Domitilla, & Pancras", + "St. Robert Bellarmine", + "Wednesday of the 4th Week of Easter", + "St. John Baptist de la Salle", + "Friday of the 4th Week of Easter", + "St. Paschal Baylon", + "5th Sunday of Easter", + "St. Peter Celestine", + "St. Bernardine of Siena", + "Wednesday of the 5th Week of Easter", + "Thursday of the 5th Week of Easter", + "Friday of the 5th Week of Easter", + "Saturday of the 5th Week of Easter", + "6th Sunday of Easter", + "St. Philip Neri", + "St. Bede the Venerable", + "Vigil of the Ascension", + "The Ascension of the Lord", + "Friday of the 6th Week of Easter", + "Queenship of the Blessed Virgin Mary", + "7th Sunday of Easter", + "Monday of the 7th Week of Easter", + "Tuesday of the 7th Week of Easter", + "St. Francis Caracciolo", + "St. Boniface", + "St. Norbert", + "Vigil of Pentecost", + "Pentecost Sunday", + "Monday of the 8th Week of Easter", + "Tuesday of the 8th Week of Easter", + "Wednesday of the 8th Week of Easter", + "Thursday of the 8th Week of Easter", + "Friday of the 8th Week of Easter", + "Saturday of the 8th Week of Easter", + "Trinity Sunday", + "Monday of the 1st Week after Pentecost", + "St. Gregory Barbarigo", + "St. Ephrem of Syria", + "The Body and Blood of Christ", + "Friday of the 1st Week after Pentecost", + "St. Aloysius Gongzaga", + "2nd Sunday after Pentecost", + "Vigil of the Nativity of St. John the Baptist", + "Nativity of St. John the Baptist", + "St. William", + "Sts. John & Paul", + "The Most Sacred Heart of Jesus", + "Vigil of Sts. Peter & Paul", + "Sts. Peter & Paul", + "In Commemoratione Sancti Pauli Apostoli", + "The Precious Blood of Our Lord Jesus Christ", + "Visitation of the Blessed Virgin Mary", + "St. Irenaeus", + "Friday of the 3rd Week after Pentecost", + "St. Anthony Mary Zaccariah", + "4th Sunday after Pentecost", + "Sts. Cyril & Methodius", + "St. Elizabeth of Portugal", + "Wednesday of the 4th Week after Pentecost", + "Seven Holy Brothers and Sts. Rufina & Secunda", + "Friday of the 4th Week after Pentecost", + "St. John Gualbert", + "5th Sunday after Pentecost", + "St. Bonaventure", + "St. Henry the Emperor", + "Wednesday of the 5th Week after Pentecost", + "Thursday of the 5th Week after Pentecost", + "Camillus de Lellis", + "St. Vincent de Paul", + "6th Sunday after Pentecost", + "St. Laurence of Brindisi", + "St. Mary Magdalene", + "St. Apollinaris", + "Thursday of the 6th Week after Pentecost", + "St. James the Greater", + "St. Anne, Mother of the Blessed Virgin", + "7th Sunday after Pentecost", + "Sts. Nazarius & Celsus, St. Victor I & St. Innocent I", + "St. Martha", + "Wednesday of the 7th Week after Pentecost", + "St. Ignatius Loyola", + "Friday of the 7th Week after Pentecost", + "St. Alphonsus Liguori", + "8th Sunday after Pentecost", + "St. Dominic", + "Dedication of the Basilica of St. Mary Major", + "Transfiguration of Our Lord", + "St. Cajetan", + "St. John Mary Vianney", + "Vigil of St. Lawrence", + "9th Sunday after Pentecost", + "Monday of the 9th Week after Pentecost", + "St. Clare", + "Wednesday of the 9th Week after Pentecost", + "Vigil of the Assumption", + "Assumption of the Blessed Virgin Mary", + "St. Joachim, Father of the Blessed Virgin", + "10th Sunday after Pentecost", + "Monday of the 10th Week after Pentecost", + "St. John Eudes", + "St. Bernard of Clairvaux", + "St. Jane Frances de Chantal", + "Immaculate Heart of Mary", + "St. Philip Benizi", + "11th Sunday after Pentecost", + "St. Louis IX", + "Tuesday of the 11th Week after Pentecost", + "St. Joseph Calasance", + "St. Augustine", + "Beheading of St. John the Baptist", + "St. Rose of Lima", + "12th Sunday after Pentecost", + "Monday of the 12th Week after Pentecost", + "St. Stephen of Hungary", + "St. Pius X", + "Thursday of the 12th Week after Pentecost", + "St. Lawrence Justinian", + "Saturday of the 12th Week after Pentecost", + "13th Sunday after Pentecost", + "Nativity of the Blessed Virgin Mary", + "Tuesday of the 13th Week after Pentecost", + "St. Nicholas of Tolentino", + "Thursday of the 13th Week after Pentecost", + "Most Holy Name of Mary", + "Saturday of the 13th Week after Pentecost", + "Exaltation of the Holy Cross", + "Seven Sorrows of the Blessed Virgin Mary", + "Sts. Cornelius & Cyprian", + "Wednesday of the 14th Week after Pentecost", + "St. Joseph of Cupertino", + "St. Januarius & Companions", + "Saturday of the 14th Week after Pentecost", + "15th Sunday after Pentecost", + "St. Thomas of Villanova", + "St. Linus", + "Ember Wednesday of September", + "Thursday of the 15th Week after Pentecost", + "Ember Friday of September", + "Ember Saturday of September", + "16th Sunday after Pentecost", + "Dedication of St. Michael the Archangel", + "St. Jerome", + "Wednesday of the 16th Week after Pentecost", + "Holy Guardian Angels", + "St. Theresa of the Infant Jesus", + "St. Francis of Assisi", + "17th Sunday after Pentecost", + "St. Bruno", + "Our Lady of the Rosary", + "St. Bridget of Sweden", + "St. John Leonardi", + "St. Francis Borgia", + "Maternity of the Blessed Virgin Mary", + "18th Sunday after Pentecost", + "St. Edward", + "St. Callistus I", + "St. Teresa of Avila", + "St. Hedwig", + "St. Margaret Mary Alacoque", + "St. Luke the Evangelist", + "19th Sunday after Pentecost", + "St. John Cantius", + "Tuesday of the 19th Week after Pentecost", + "Wednesday of the 19th Week after Pentecost", + "St. Anthony Mary Claret", + "St. Raphael the Archangel", + "Saturday of the 19th Week after Pentecost", + "Our Lord Jesus Christ, King of the Universe", + "Monday of the 20th Week after Pentecost", + "Sts. Simon & Jude", + "Wednesday of the 20th Week after Pentecost", + "Thursday of the 20th Week after Pentecost", + "Friday of the 20th Week after Pentecost", + "All Saints", + "21st Sunday after Pentecost", + "Commemoration of All Souls", + "St. Charles Borromeo", + "Wednesday of the 21st Week after Pentecost", + "Thursday of the 21st Week after Pentecost", + "Friday of the 21st Week after Pentecost", + "Saturday of the 21st Week after Pentecost", + "Dedication of the Archbasilica of Our Holy Savior", + "St. Andrew Avellino", + "St. Martin of Tours", + "St. Martin I", + "Thursday of the 22nd Week after Pentecost", + "St. Josaphat", + "St. Albert the Great", + "23rd Sunday after Pentecost", + "St. Gregory the Wonderworker", + "Dedication of the Basilicas of Sts. Peter & Paul", + "St. Elizabeth of Hungary", + "St. Felix of Valois", + "Presentation of the Blessed Virgin Mary", + "St. Cecilia", + "24th Sunday after Pentecost", + "St. John of the Cross", + "St. Catherine of Alexandria", + "St. Sylvester", + "Thursday of the 24th Week after Pentecost", + "Friday of the 24th Week after Pentecost", + "Saturday of the 24th Week after Pentecost", + "1st Sunday of Advent", + "Monday of the 1st Week of Advent", + "St. Vivian", + "St. Francis Xavier", + "St. Peter Chrysologus", + "Friday of the 1st Week of Advent", + "St. Nicholas", + "2nd Sunday of Advent", + "Immaculate Conception of the Blessed Virgin Mary", + "Tuesday of the 2nd Week of Advent", + "Wednesday of the 2nd Week of Advent", + "St. Damasus I", + "Friday of the 2nd Week of Advent", + "St. Lucy", + "3rd Sunday of Advent", + "Monday of the 3rd Week of Advent", + "St. Eusebius", + "Ember Wednesday of Advent", + "Thursday of the 3rd Week of Advent", + "Ember Friday of Advent", + "Ember Saturday of Advent", + "4th Sunday of Advent", + "Monday of the 4th Week of Advent", + "Tuesday of the 4th Week of Advent", + "Vigil of Christmas", + "The Nativity of the Lord", + "St. Stephen", + "St. John the Evangelist", + "Monday of Christmas", + "Tuesday of Christmas", + "Wednesday of Christmas", + "Monday of the 1st Week after Epiphany", + "Monday of the 2nd Week after Epiphany", + "St. Polycarp", + "St. Cyril of Alexandria", + "Tuesday of the 3rd Week of Septuagesima", + "Wednesday of the 2nd Week of Lent", + "Tuesday of the 3rd Week of Lent", + "St. Hermenegild", + "St. Justin", + "Wednesday of the 2nd Week of Easter", + "Thursday of the 2nd Week of Easter", + "Friday of the 2nd Week of Easter", + "Monday of the 3rd Week of Easter", + "St. Anselm", + "Sts. Soter & Caius", + "St. Fidelis of Sigmaringen", + "St. Mark", + "St. Peter Canisius", + "St. Monica", + "Sts. Philip & James", + "Saturday of the 6th Week of Easter", + "St. Venantius", + "Thursday of the 7th Week of Easter", + "Friday of the 7th Week of Easter", + "St. Angela Merici", + "Tuesday of the 1st Week after Pentecost", + "Wednesday of the 1st Week after Pentecost", + "Monday of the 2nd Week after Pentecost", + "Tuesday of the 2nd Week after Pentecost", + "St. Margaret of Scotland", + "St. Barnabas", + "St. Anthony of Padua", + "3rd Sunday after Pentecost", + "Monday of the 3rd Week after Pentecost", + "Tuesday of the 3rd Week after Pentecost", + "St. Julia of Falconieri", + "Saturday of the 3rd Week after Pentecost", + "St. Paulinus of Nola", + "Saturday of the 4th Week after Pentecost", + "Saturday of the 5th Week after Pentecost", + "Monday of the 6th Week after Pentecost", + "Saturday of the 6th Week after Pentecost", + "Monday of the 7th Week after Pentecost", + "Thursday of the 7th Week after Pentecost", + "St. Jerome Emiliani", + "Friday of the 8th Week after Pentecost", + "Thursday of the 9th Week after Pentecost", + "Saturday of the 9th Week after Pentecost", + "St. Lawrence", + "Thursday of the 11th Week after Pentecost", + "St. Hyacinth", + "Tuesday of the 12th Week after Pentecost", + "St. Bartholomew", + "Wednesday of the 13th Week after Pentecost", + "14th Sunday after Pentecost", + "St. Raymond Nonnatus", + "Tuesday of the 14th Week after Pentecost", + "Friday of the 14th Week after Pentecost", + "Monday of the 15th Week after Pentecost", + "Wednesday of the 15th Week after Pentecost", + "Friday of the 15th Week after Pentecost", + "Thursday of the 16th Week after Pentecost", + "St. Matthew", + "Thursday of the 17th Week after Pentecost", + "St. Wenceslaus", + "Thursday of the 18th Week after Pentecost", + "Monday of the 19th Week after Pentecost", + "20th Sunday after Pentecost", + "St. Peter of Alcantara", + "Monday of the 22nd Week after Pentecost", + "Tuesday of the 22nd Week after Pentecost", + "Friday of the 22nd Week after Pentecost", + "Saturday of the 22nd Week after Pentecost", + "Tuesday of the 23rd Week after Pentecost", + "Thursday of the 23rd Week after Pentecost", + "Friday of the 23rd Week after Pentecost", + "Saturday of the 23rd Week after Pentecost", + "6th Sunday after Epiphany", + "St. Gertrude the Great", + "St. Clement I", + "Friday of the 26th Week after Pentecost", + "Saturday of the 26th Week after Pentecost", + "St. Andrew", + "Tuesday of the 1st Week of Advent", + "Saturday of the 1st Week of Advent", + "St. Ambrose", + "Thursday of the 2nd Week of Advent", + "Saturday of the 2nd Week of Advent", + "Tuesday of the 3rd Week of Advent", + "St. Thomas", + "Wednesday of the 4th Week of Advent", + "Holy Innocents", + "Tuesday of the 2nd Week after Epiphany", + "Tuesday of the 2nd Week of Easter", + "Friday of the 3rd Week of Easter", + "Saturday of the 3rd Week of Easter", + "Monday of the 4th Week of Easter", + "Tuesday of the 4th Week of Easter", + "Sts. Cletus & Marcellinus", + "Monday of the 6th Week of Easter", + "St. Gregory VII", + "St. Augustine of Canterbury", + "St. Mary Magdalene de Pazzi", + "Wednesday of the 2nd Week after Pentecost", + "Thursday of the 2nd Week after Pentecost", + "Wednesday of the 3rd Week after Pentecost", + "St. John of San Fecundo", + "St. Basil the Great", + "Tuesday of the 4th Week after Pentecost", + "Tuesday of the 7th Week after Pentecost", + "Tuesday of the 8th Week after Pentecost", + "Saturday of the 8th Week after Pentecost", + "Tuesday of the 10th Week after Pentecost", + "Friday of the 10th Week after Pentecost", + "Wednesday of the 12th Week after Pentecost", + "Friday of the 12th Week after Pentecost", + "Thursday of the 14th Week after Pentecost", + "Saturday of the 15th Week after Pentecost", + "Monday of the 16th Week after Pentecost", + "Tuesday of the 16th Week after Pentecost", + "Saturday of the 16th Week after Pentecost", + "Monday of the 17th Week after Pentecost", + "Friday of the 17th Week after Pentecost", + "Monday of the 18th Week after Pentecost", + "Sts. Cosmas & Damian", + "Friday of the 19th Week after Pentecost", + "Tuesday of the 20th Week after Pentecost", + "Tuesday of the 21st Week after Pentecost", + "22nd Sunday after Pentecost", + "Monday of the 23rd Week after Pentecost", + "Wednesday of the 23rd Week after Pentecost", + "Wednesday of the 24th Week after Pentecost", + "Monday of the 25th Week after Pentecost", + "Saturday of the 25th Week after Pentecost", + "Saturday of the 27th Week after Pentecost", + "Wednesday of the 1st Week of Advent", + "Thursday of the 4th Week of Advent", + "Wednesday of the 2nd Week after Epiphany", + "4th Sunday after Epiphany", + "Thursday of the 5th Week after Epiphany", + "Saturday of the 1st Week of Septuagesima", + "Monday of the 2nd Week of Septuagesima", + "St. Peter Damien", + "Wednesday of the 3rd Week of Easter", + "Tuesday of the 5th Week of Easter", + "Tuesday of the 6th Week of Easter", + "Thursday of the 4th Week after Pentecost", + "Tuesday of the 5th Week after Pentecost", + "Thursday of the 8th Week after Pentecost", + "Friday of the 9th Week after Pentecost", + "Saturday of the 11th Week after Pentecost", + "Monday of the 13th Week after Pentecost", + "Monday of the 14th Week after Pentecost", + "Monday of the 21st Week after Pentecost", + "Wednesday of the 22nd Week after Pentecost", + "Tuesday of the 25th Week after Pentecost", + "Wednesday of the 25th Week after Pentecost", + "Friday of the 25th Week after Pentecost", + "Thursday of the 2nd Week after Epiphany", + "Friday of the 2nd Week after Epiphany", + "St. Leo the Great", + "Wednesday of the 7th Week of Easter", + "Saturday of the 1st Week after Pentecost", + "Saturday of the 2nd Week after Pentecost", + "Wednesday of the 6th Week after Pentecost", + "Friday of the 6th Week after Pentecost", + "Monday of the 8th Week after Pentecost", + "Tuesday of the 9th Week after Pentecost", + "Wednesday of the 10th Week after Pentecost", + "Tuesday of the 15th Week after Pentecost", + "Tuesday of the 18th Week after Pentecost", + "Wednesday of the 18th Week after Pentecost", + "Monday of the 24th Week after Pentecost", + "Tuesday of the 24th Week after Pentecost", + "Tuesday of the 27th Week after Pentecost", + "Wednesday of the 27th Week after Pentecost", + "Thursday of the 27th Week after Pentecost", + "Monday of the 2nd Week of Advent", + "Wednesday of the 6th Week after Epiphany", + "Thursday of the 2nd Week of Septuagesima", + "Thursday of the 4th Week of Easter", + "Thursday of the 3rd Week after Pentecost", + "Saturday of the 7th Week after Pentecost", + "Monday of the 11th Week after Pentecost", + "Friday of the 13th Week after Pentecost", + "Saturday of the 17th Week after Pentecost", + "Thursday of the 1st Week of Advent", + "Friday of the 5th Week after Pentecost", + "Wednesday of the 8th Week after Pentecost", + "Wednesday of the 17th Week after Pentecost", + "Saturday of the 20th Week after Pentecost", + "Thursday of the 25th Week after Pentecost", + "Saturday of the 4th Week of Easter", + "Monday of the 5th Week of Easter", + "Monday of the 4th Week after Pentecost", + "Monday of the 5th Week after Pentecost", + "Thursday of the 10th Week after Pentecost", + "Friday of the 11th Week after Pentecost", + "Friday of the 4th Week of Advent", + "Friday of the 5th Week after Epiphany", + "Monday of the 2nd Week of Easter", + "Tuesday of the 6th Week after Pentecost", + "Tuesday of the 17th Week after Pentecost", + "Thursday of the 19th Week after Pentecost", + "Monday of the 26th Week after Pentecost", + "Tuesday of the 26th Week after Pentecost", + "Wednesday of the 26th Week after Pentecost", + "Wednesday of the 11th Week after Pentecost", + "Friday of the 16th Week after Pentecost", + "Tuesday of the 28th Week after Pentecost", + "Wednesday of the 28th Week after Pentecost", + "Thursday of the 28th Week after Pentecost", + "Saturday of the 28th Week after Pentecost", + "Wednesday of the 5th Week after Epiphany", + "Monday of the 6th Week after Epiphany", + "Tuesday of the 6th Week after Epiphany", + "Wednesday of the 7th Week after Epiphany", + "Thursday of the 7th Week after Epiphany", + "Friday of the 7th Week after Epiphany", + "Saturday of the 7th Week after Epiphany", + "Friday of the 18th Week after Pentecost", + "Saturday of the 10th Week after Pentecost", + "Thursday of the 26th Week after Pentecost", + "Friday of the 27th Week after Pentecost", + "Saturday of the 18th Week after Pentecost", + "Monday of the 27th Week after Pentecost", + "Saturday of the 5th Week after Epiphany", +}; + +static const char *const parts[] = { + "Epistle", + "Gospel", +}; + +static const char *const cites_en[] = { + "Ti 2:11-15", + "Lk 2:21", + "Gal 4:1-7", + "Lk 2:33-40", + "Isa 60:1-6", + "Matt 2:1-12", + "Col 3:12-17", + "Lk 2:42-52", + "Jn 1:29-34", + "2 Tim 4:1-8", + "Matt 5:13-19", + "Phil 3:7-12", + "Matt 11:25-30", + "1 Pet 5:1-4,10-11", + "Matt 16:13-19", + "Lk 12:35-40", + "Rom 12:6-16", + "Jn 2:1-11", + "Heb 11:33-39", + "Lk 6:17-23", + "Sir 51:1-8,12", + "Matt 25:1-13", + "Wis 3:1-8", + "Lk 21:9-19", + "Sir 31:8-11", + "1 Tim 6:11-16", + "Lk 14:26-33", + "Acts 9:1-22", + "Matt 19:27-29", + "Rom 12:16-21", + "Matt 8:1-13", + "1 Cor 4:9-14", + "Lk 12:32-34", + "Phil 4:4-9", + "Matt 18:1-5", + "Rom 8:35-39", + "Jn 12:24-26", + "Mal 3:1-4", + "Lk 2:22-32", + "Rom 13:8-10", + "Matt 8:23-27", + "Sir 44:16-27; 45:3-20", + "Matt 25:14-23", + "1 Cor 1:26-31", + "Matt 19:3-12", + "Lk 10:1-9", + "Matt 13:24-30", + "2 Cor 10:17-18; 11:1-2", + "Lk 1:26-31", + "1 Cor 9:24-27; 10:1-5", + "Matt 20:1-16", + "1 Pet 1:1-7", + "2 Cor 11:19-33; 12:1-9", + "Lk 8:4-15", + "Acts 1:15-26", + "1 Jn 2:14-17", + "Mk 10:13-21", + "1 Cor 13:1-13", + "Lk 18:31-43", + "Jl 2:12-19", + "Matt 6:16-21", + "Isa 38:1-6", + "Matt 8:5-13", + "Isa 58:1-9", + "Matt 5:43-48; 6:1-4", + "Isa 58:9-14", + "Mk 6:47-56", + "2 Cor 6:1-10", + "Matt 4:1-11", + "Matt 25:31-46", + "Isa 55:6-11", + "Matt 21:10-17", + "Matt 12:38-50", + "Matt 15:21-28", + "Jn 5:1-15", + "1 Thess 5:14-23", + "Matt 17:1-9", + "1 Thess 4:1-7", + "Dan 9:15-19", + "Jn 8:21-29", + "Matt 23:1-12", + "Matt 1:18-21", + "Jer 17:5-10", + "Lk 16:19-31", + "Gen 37:6-22", + "Matt 21:33-46", + "Gen 27:6-40", + "Lk 15:11-32", + "Eph 5:1-9", + "Lk 11:14-28", + "Lk 4:23-30", + "Isa 7:10-15", + "Lk 1:26-38", + "Ex 20:12-24", + "Matt 15:1-20", + "Jer 7:1-7", + "Lk 4:38-44", + "Num 20:1,3,6-13", + "Jn 4:5-42", + "Dan 13:1-9,15-17,19-30,33-62", + "Jn 8:1-11", + "Gal 4:22-31", + "Jn 6:1-15", + "Jn 2:13-25", + "Ex 32:7-14", + "Jn 7:14-31", + "Isa 1:16-19", + "Jn 9:1-38", + "Lk 7:11-16", + "Jn 11:1-45", + "Isa 49:8-15", + "Jn 8:12-20", + "Heb 9:11-15", + "Jn 8:46-59", + "Jn 7:32-39", + "Jer 11:18-20", + "Mk 14:32-72,15,1-46", + "Lev 19:1-2,11-19,25", + "Jn 10:22-38", + "Dan 3:25,34-45", + "Lk 7:36-50", + "Jer 17:13-18", + "Jn 11:47-54", + "Jer 18:18-23", + "Jn 12:10-36", + "Phil 2:5-11", + "Matt 26:36-75; 27:1-60", + "1 Cor 5:7-8", + "Mk 16:1-7", + "Acts 10:37-43", + "Lk 24:13-35", + "Acts 13:16,26-33", + "Lk 24:36-47", + "Acts 3:13-15,17-19", + "Jn 21:1-14", + "Acts 8:26-40", + "Jn 20:11-18", + "1 Pet 3:18-22", + "Matt 28:16-20", + "1 Pet 2:1-10", + "Jn 20:1-9", + "1 Jn 5:4-10", + "Jn 20:19-31", + "1 Cor 1:17-25", + "2 Tim 2:8-10; 3:10-12", + "Matt 10:34-42", + "Col 3:14-15,17,23-24", + "Matt 13:54-58", + "2 Cor 4:5-14", + "Matt 10:23-28", + "Jn 19:25-27", + "1 Pet 2:21-25", + "Jn 10:11-16", + "Wis 5:1-5", + "Jn 15:1-7", + "1 Pet 2:11-19", + "Jn 16:16-22", + "Jn 4:46-53", + "Wis 7:7-14", + "Jas 1:17-21", + "Jn 16:5-14", + "Jas 1:22-27", + "Jn 16:23-30", + "Eph 4:7-13", + "Jn 17:1-11", + "Acts 1:1-11", + "Mk 16:14-20", + "Lk 1:26-33", + "1 Pet 4:7-11", + "Jn 15:26-27; 16:1-4", + "Wis 4:7-14", + "Matt 5:1-12", + "Acts 19:1-8", + "Jn 14:15-21", + "Acts 2:1-11", + "Jn 14:23-31", + "Acts 10:34,42-48", + "Jn 3:16-21", + "Acts 8:14-17", + "Jn 10:1-10", + "Acts 5:12-16", + "Jn 6:44-52", + "Acts 8:5-8", + "Lk 9:1-6", + "Jl 2:23-24,26-27", + "Lk 5:17-26", + "Rom 5:1-5", + "Rom 11:33-36", + "Matt 28:18-20", + "Matt 22:29-40", + "1 Jn 3:13-18", + "Lk 14:16-24", + "Jer 1:4-10", + "Lk 1:5-17", + "Isa 49:1-3,5-7", + "Lk 1:57-68", + "Lk 12:1-8", + "Acts 3:1-10", + "Jn 21:15-19", + "Acts 12:1-11", + "Gal 1:11-20", + "Matt 10:16-22", + "Jn 19:30-35", + "Song 2:8-14", + "Lk 1:39-47", + "2 Tim 3:14-17; 4:1-5", + "Matt 10:28-33", + "1 Pet 5:6-11", + "Lk 15:1-10", + "1 Tim 4:8-16", + "Mk 10:15-21", + "Rom 8:18-23", + "Lk 5:1-11", + "Heb 7:23-27", + "Prov 31:10-31", + "Matt 13:44-52", + "Matt 12:46-50", + "Matt 5:43-48", + "1 Pet 3:8-15", + "Matt 5:20-24", + "Jn 15:12-16", + "Rom 6:3-11", + "Mk 8:1-9", + "Song 3:2-5; 8:6-7", + "1 Pet 5:1-11", + "Lk 22:24-30", + "1 Cor 4:9-15", + "Matt 20:20-23", + "Rom 6:19-23", + "Matt 7:15-21", + "Wis 10:17-20", + "Lk 10:38-42", + "2 Tim 2:1-7", + "Rom 8:12-17", + "Lk 16:1-9", + "Lk 11:27-28", + "2 Pet 1:16-19", + "Matt 6:24-33", + "Matt 16:24-27", + "1 Cor 10:6-13", + "Lk 19:41-47", + "Sir 24:23-31", + "Jdt 13:22-25,15,10", + "Lk 1:41-50", + "Matt 1:1-16", + "1 Cor 12:2-11", + "Lk 18:9-14", + "1 Cor 15:1-10", + "Mk 7:31-37", + "Wis 10:10-14", + "Lk 19:12-26", + "Jer 1:17-19", + "Mk 6:17-29", + "2 Cor 3:4-9", + "Lk 10:23-37", + "1 Thess 2:2-8", + "Jn 21:15-17", + "Gal 3:16-22", + "Lk 17:11-19", + "Prov 8:22-35", + "Jn 12:31-36", + "Jdt 13:22,25", + "Gal 5:16-24", + "1 Cor 13:1-8", + "Matt 22:1-14", + "Heb 10:32-38", + "Matt 24:3-13", + "Gal 5:25-26; 6:1-10", + "Mk 9:16-28", + "Ezek 1:10-14", + "Matt 9:9-13", + "Eph 3:13-21", + "Lk 14:1-11", + "Rev 1:1-5", + "Matt 18:1-10", + "Ex 23:20-23", + "Isa 66:12-14", + "Matt 18:1-4", + "Gal 6:14-18", + "Eph 4:1-6", + "Matt 22:34-46", + "Prov 8:22-24,32-35", + "1 Tim 5:3-10", + "2 Cor 4:1-6,15-18", + "Lk 2:43-51", + "1 Cor 1:4-8", + "Matt 9:1-8", + "Eph 3:8-9,14-19", + "2 Cor 8:16-24", + "Eph 4:23-28", + "Jas 2:12-17", + "Matt 24:42-47", + "Tob 12:7-15", + "Jn 5:1-4", + "Col 1:12-20", + "Jn 18:33-37", + "Jn 15:17-25", + "Eph 6:10-17", + "Matt 18:23-35", + "1 Cor 15:51-57", + "Jn 5:25-29", + "Rev 21:2-5", + "Lk 19:1-10", + "Lk 11:33-36", + "Phil 1:6-11", + "Matt 22:15-21", + "Heb 5:1-6", + "Phil 3:17-21; 4:1-3", + "Matt 9:18-26", + "Mk 11:22-24", + "Sir 51:13-17", + "Col 1:9-14", + "Matt 24:15-35", + "Rom 13:11-14", + "Lk 21:25-33", + "Rom 10:10-18", + "Mk 16:15-18", + "Heb 13:7-17", + "Rom 15:4-13", + "Matt 11:2-10", + "Lk 1:26-28", + "Phil 4:4-7", + "Jn 1:19-28", + "2 Cor 1:3-7", + "Isa 11:1-5", + "Eph 2:19-22", + "Jn 20:24-29", + "1 Cor 4:1-5", + "Lk 3:1-6", + "Rom 1:1-6", + "Heb 1:1-12", + "Jn 1:1-14", + "Acts 6:8-10; 7:54-59", + "Matt 23:34-39", + "Jn 21:19-24", + "1 Jn 3:10-16", + "Matt 10:26-32", + "Esth 13:8-11,15-17", + "Matt 20:17-28", + "Matt 18:15-22", + "1 Cor 1:18-25,30", + "Lk 12:2-8", + "Jn 14:1-13", + "Acts 11:21-26; 13:1-3", + "2 Cor 8:9-15", + "Isa 58:7-11", + "Matt 19:13-21", + "2 Cor 9:6-10", + "1 Cor 12:27-31", + "Lk 6:12-19", + "Eph 5:15-21", + "1 Thess 1:2-10", + "Matt 13:31-35", + "Matt 4:18-22", + "Matt 2:13-18", + "1 Thess 2:2-9", + "Lk 14:26-35", + "Wis 5:16-20", +}; + +static const char *const cites_la[] = { + "Tit 2:11-15", + "Luc 2:21", + "Gal 4:1-7", + "Luc 2:33-40", + "Is 60:1-6", + "Matt 2:1-12", + "Col 3:12-17", + "Luc 2:42-52", + "Ioann 1:29-34", + "2 Tim 4:1-8", + "Matt 5:13-19", + "Phil 3:7-12", + "Matt 11:25-30", + "1 Pet 5:1-4,10-11", + "Matt 16:13-19", + "Luc 12:35-40", + "Rom 12:6-16", + "Ioann 2:1-11", + "Hebr 11:33-39", + "Luc 6:17-23", + "Eccli 51:1-8,12", + "Matt 25:1-13", + "Sap 3:1-8", + "Luc 21:9-19", + "Eccli 31:8-11", + "1 Tim 6:11-16", + "Luc 14:26-33", + "Act 9:1-22", + "Matt 19:27-29", + "Rom 12:16-21", + "Matt 8:1-13", + "1 Cor 4:9-14", + "Luc 12:32-34", + "Phil 4:4-9", + "Matt 18:1-5", + "Rom 8:35-39", + "Ioann 12:24-26", + "Mal 3:1-4", + "Luc 2:22-32", + "Rom 13:8-10", + "Matt 8:23-27", + "Eccli 44:16-27; 45:3-20", + "Matt 25:14-23", + "1 Cor 1:26-31", + "Matt 19:3-12", + "Luc 10:1-9", + "Matt 13:24-30", + "2 Cor 10:17-18; 11:1-2", + "Luc 1:26-31", + "1 Cor 9:24-27; 10:1-5", + "Matt 20:1-16", + "1 Pet 1:1-7", + "2 Cor 11:19-33; 12:1-9", + "Luc 8:4-15", + "Act 1:15-26", + "1 Ioann 2:14-17", + "Marc 10:13-21", + "1 Cor 13:1-13", + "Luc 18:31-43", + "Ioel 2:12-19", + "Matt 6:16-21", + "Is 38:1-6", + "Matt 8:5-13", + "Is 58:1-9", + "Matt 5:43-48; 6:1-4", + "Is 58:9-14", + "Marc 6:47-56", + "2 Cor 6:1-10", + "Matt 4:1-11", + "Matt 25:31-46", + "Is 55:6-11", + "Matt 21:10-17", + "Matt 12:38-50", + "Matt 15:21-28", + "Ioann 5:1-15", + "1 Thess 5:14-23", + "Matt 17:1-9", + "1 Thess 4:1-7", + "Dan 9:15-19", + "Ioann 8:21-29", + "Matt 23:1-12", + "Matt 1:18-21", + "Ier 17:5-10", + "Luc 16:19-31", + "Gen 37:6-22", + "Matt 21:33-46", + "Gen 27:6-40", + "Luc 15:11-32", + "Eph 5:1-9", + "Luc 11:14-28", + "Luc 4:23-30", + "Is 7:10-15", + "Luc 1:26-38", + "Ex 20:12-24", + "Matt 15:1-20", + "Ier 7:1-7", + "Luc 4:38-44", + "Num 20:1,3,6-13", + "Ioann 4:5-42", + "Dan 13:1-9,15-17,19-30,33-62", + "Ioann 8:1-11", + "Gal 4:22-31", + "Ioann 6:1-15", + "Ioann 2:13-25", + "Ex 32:7-14", + "Ioann 7:14-31", + "Is 1:16-19", + "Ioann 9:1-38", + "Luc 7:11-16", + "Ioann 11:1-45", + "Is 49:8-15", + "Ioann 8:12-20", + "Hebr 9:11-15", + "Ioann 8:46-59", + "Ioann 7:32-39", + "Ier 11:18-20", + "Marc 14:32-72,15,1-46", + "Lev 19:1-2,11-19,25", + "Ioann 10:22-38", + "Dan 3:25,34-45", + "Luc 7:36-50", + "Ier 17:13-18", + "Ioann 11:47-54", + "Ier 18:18-23", + "Ioann 12:10-36", + "Phil 2:5-11", + "Matt 26:36-75; 27:1-60", + "1 Cor 5:7-8", + "Marc 16:1-7", + "Act 10:37-43", + "Luc 24:13-35", + "Act 13:16,26-33", + "Luc 24:36-47", + "Act 3:13-15,17-19", + "Ioann 21:1-14", + "Act 8:26-40", + "Ioann 20:11-18", + "1 Pet 3:18-22", + "Matt 28:16-20", + "1 Pet 2:1-10", + "Ioann 20:1-9", + "1 Ioann 5:4-10", + "Ioann 20:19-31", + "1 Cor 1:17-25", + "2 Tim 2:8-10; 3:10-12", + "Matt 10:34-42", + "Col 3:14-15,17,23-24", + "Matt 13:54-58", + "2 Cor 4:5-14", + "Matt 10:23-28", + "Ioann 19:25-27", + "1 Pet 2:21-25", + "Ioann 10:11-16", + "Sap 5:1-5", + "Ioann 15:1-7", + "1 Pet 2:11-19", + "Ioann 16:16-22", + "Ioann 4:46-53", + "Sap 7:7-14", + "Iac 1:17-21", + "Ioann 16:5-14", + "Iac 1:22-27", + "Ioann 16:23-30", + "Eph 4:7-13", + "Ioann 17:1-11", + "Act 1:1-11", + "Marc 16:14-20", + "Luc 1:26-33", + "1 Pet 4:7-11", + "Ioann 15:26-27; 16:1-4", + "Sap 4:7-14", + "Matt 5:1-12", + "Act 19:1-8", + "Ioann 14:15-21", + "Act 2:1-11", + "Ioann 14:23-31", + "Act 10:34,42-48", + "Ioann 3:16-21", + "Act 8:14-17", + "Ioann 10:1-10", + "Act 5:12-16", + "Ioann 6:44-52", + "Act 8:5-8", + "Luc 9:1-6", + "Ioel 2:23-24,26-27", + "Luc 5:17-26", + "Rom 5:1-5", + "Rom 11:33-36", + "Matt 28:18-20", + "Matt 22:29-40", + "1 Ioann 3:13-18", + "Luc 14:16-24", + "Ier 1:4-10", + "Luc 1:5-17", + "Is 49:1-3,5-7", + "Luc 1:57-68", + "Luc 12:1-8", + "Act 3:1-10", + "Ioann 21:15-19", + "Act 12:1-11", + "Gal 1:11-20", + "Matt 10:16-22", + "Ioann 19:30-35", + "Cant 2:8-14", + "Luc 1:39-47", + "2 Tim 3:14-17; 4:1-5", + "Matt 10:28-33", + "1 Pet 5:6-11", + "Luc 15:1-10", + "1 Tim 4:8-16", + "Marc 10:15-21", + "Rom 8:18-23", + "Luc 5:1-11", + "Hebr 7:23-27", + "Prov 31:10-31", + "Matt 13:44-52", + "Matt 12:46-50", + "Matt 5:43-48", + "1 Pet 3:8-15", + "Matt 5:20-24", + "Ioann 15:12-16", + "Rom 6:3-11", + "Marc 8:1-9", + "Cant 3:2-5; 8:6-7", + "1 Pet 5:1-11", + "Luc 22:24-30", + "1 Cor 4:9-15", + "Matt 20:20-23", + "Rom 6:19-23", + "Matt 7:15-21", + "Sap 10:17-20", + "Luc 10:38-42", + "2 Tim 2:1-7", + "Rom 8:12-17", + "Luc 16:1-9", + "Luc 11:27-28", + "2 Pet 1:16-19", + "Matt 6:24-33", + "Matt 16:24-27", + "1 Cor 10:6-13", + "Luc 19:41-47", + "Eccli 24:23-31", + "Idt 13:22-25,15,10", + "Luc 1:41-50", + "Matt 1:1-16", + "1 Cor 12:2-11", + "Luc 18:9-14", + "1 Cor 15:1-10", + "Marc 7:31-37", + "Sap 10:10-14", + "Luc 19:12-26", + "Ier 1:17-19", + "Marc 6:17-29", + "2 Cor 3:4-9", + "Luc 10:23-37", + "1 Thess 2:2-8", + "Ioann 21:15-17", + "Gal 3:16-22", + "Luc 17:11-19", + "Prov 8:22-35", + "Ioann 12:31-36", + "Idt 13:22,25", + "Gal 5:16-24", + "1 Cor 13:1-8", + "Matt 22:1-14", + "Hebr 10:32-38", + "Matt 24:3-13", + "Gal 5:25-26; 6:1-10", + "Marc 9:16-28", + "Ez 1:10-14", + "Matt 9:9-13", + "Eph 3:13-21", + "Luc 14:1-11", + "Apoc 1:1-5", + "Matt 18:1-10", + "Ex 23:20-23", + "Is 66:12-14", + "Matt 18:1-4", + "Gal 6:14-18", + "Eph 4:1-6", + "Matt 22:34-46", + "Prov 8:22-24,32-35", + "1 Tim 5:3-10", + "2 Cor 4:1-6,15-18", + "Luc 2:43-51", + "1 Cor 1:4-8", + "Matt 9:1-8", + "Eph 3:8-9,14-19", + "2 Cor 8:16-24", + "Eph 4:23-28", + "Iac 2:12-17", + "Matt 24:42-47", + "Tob 12:7-15", + "Ioann 5:1-4", + "Col 1:12-20", + "Ioann 18:33-37", + "Ioann 15:17-25", + "Eph 6:10-17", + "Matt 18:23-35", + "1 Cor 15:51-57", + "Ioann 5:25-29", + "Apoc 21:2-5", + "Luc 19:1-10", + "Luc 11:33-36", + "Phil 1:6-11", + "Matt 22:15-21", + "Hebr 5:1-6", + "Phil 3:17-21; 4:1-3", + "Matt 9:18-26", + "Marc 11:22-24", + "Eccli 51:13-17", + "Col 1:9-14", + "Matt 24:15-35", + "Rom 13:11-14", + "Luc 21:25-33", + "Rom 10:10-18", + "Marc 16:15-18", + "Hebr 13:7-17", + "Rom 15:4-13", + "Matt 11:2-10", + "Luc 1:26-28", + "Phil 4:4-7", + "Ioann 1:19-28", + "2 Cor 1:3-7", + "Is 11:1-5", + "Eph 2:19-22", + "Ioann 20:24-29", + "1 Cor 4:1-5", + "Luc 3:1-6", + "Rom 1:1-6", + "Hebr 1:1-12", + "Ioann 1:1-14", + "Act 6:8-10; 7:54-59", + "Matt 23:34-39", + "Ioann 21:19-24", + "1 Ioann 3:10-16", + "Matt 10:26-32", + "Esth 13:8-11,15-17", + "Matt 20:17-28", + "Matt 18:15-22", + "1 Cor 1:18-25,30", + "Luc 12:2-8", + "Ioann 14:1-13", + "Act 11:21-26; 13:1-3", + "2 Cor 8:9-15", + "Is 58:7-11", + "Matt 19:13-21", + "2 Cor 9:6-10", + "1 Cor 12:27-31", + "Luc 6:12-19", + "Eph 5:15-21", + "1 Thess 1:2-10", + "Matt 13:31-35", + "Matt 4:18-22", + "Matt 2:13-18", + "1 Thess 2:2-9", + "Luc 14:26-35", + "Sap 5:16-20", +}; + +static const unsigned short vpool[] = { + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, + 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, + 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, + 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, + 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, + 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, + 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, + 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, + 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, + 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, + 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, + 224,225,226,227,118,228,229,230,231,232,233,234,235,236,237,238, + 239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254, + 255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270, + 271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286, + 287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302, + 303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318, + 319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334, + 335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350, + 351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366, + 367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382, + 383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398, + 399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414, + 415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430, + 431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446, + 447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462, + 463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478, + 479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494, + 495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510, + 511,512,513,514,515,516,517,237,238,239,240,241,242,243,244,245, + 518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533, + 534,535,536,526,537,538,539,540,541,542,543,544,545,546,547,548, + 549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564, + 565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580, + 581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596, + 597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612, + 613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628, + 629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644, + 645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660, + 661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676, + 677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692, + 693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708, + 709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724, + 725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740, + 741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756, + 757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772, + 773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788, + 789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804, + 805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820, + 821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836, + 837,838,839,373,374,375,376,377,378,840,841,842,843,844,845,846, + 847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862, + 863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878, + 879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894, + 895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910, + 911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926, + 927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942, + 943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958, + 959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974, + 975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990, + 991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006, + 1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022, + 1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1038, + 1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,1053,1054, + 1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070, + 1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1086, + 1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102, + 1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118, + 1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134, + 1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150, + 1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166, + 1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182, + 1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198, + 1199,1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214, + 1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230, + 1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246, + 1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262, + 1263,1264,1265,1266,1252,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277, + 1278,1279,1280,1281,1282,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221, + 1222,1223,1224,1225,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294, + 1295,1296,1297,1298,1299,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310, + 1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326, + 1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342, + 1343,1344,1345,1346,1347,1348,1349,1350,1351,1352,1353,1354,1355,1356,1357,1358, + 1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1373,271, + 272,273,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387, + 1388,1389,1390,1391,1392,1393,1394,1395,1396,1397,1398,1399,1400,1401,1402,1403, + 1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419, + 1420,1421,1422,1423,1424,1425,1426,1427,1428,1429,1430,1431,1432,1433,1434,1435, + 1436,1437,1438,1439,1440,1441,1442,1443,1444,1445,1446,1447,1448,1449,1450,1451, + 1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1465,1466,1467, + 1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1481,1482,1483, + 1484,1485,1486,1487,1488,1489,1490,1491,1492,1493,1494,1495,1496,1497,1498,1499, + 1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515, + 1516,1517,1518,1519,1520,1521,1522,1523,1524,1525,1526,1527,1528,1529,1530,1531, + 1532,1533,1534,1535,1536,1537,1538,1539,1540,1541,1542,1543,1544,1545,1546,1547, + 1548,1549,1550,1551,1552,1553,1554,1555,1556,1557,1558,1559,1560,1561,1562,1563, + 1564,1565,1566,1567,1568,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579, + 1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1595, + 1596,1597,1598,1599,1600,1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611, + 1612,1613,1614,1615,1616,1617,1618,1619,1620,1621,1622,1623,1624,1625,1626,1627, + 1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643, + 1644,1645,1646,1647,1648,1649,1650,1651,1652,1653,1654,1655,1656,1657,1658,1659, + 1660,1661,1662,1663,1664,1665,1666,41,42,44,1667,1668,1669,1670,1671,1672, + 1673,1674,1675,1676,1677,1678,1679,1680,1681,1682,1683,1684,1685,1686,1687,1688, + 1689,1690,1691,1692,1693,1694,1695,1696,1697,1698,1699,1700,1701,1702,1703,1704, + 1705,1706,1707,1708,1709,1710,1711,1712,1713,1714,1715,1716,1717,1718,1719,1720, + 1721,1722,1723,1724,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736, + 1737,1738,1739,1740,1741,1742,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752, + 1753,1754,1755,1756,1757,1758,1759,1760,1761,1762,1763,1764,1765,1766,1767,1768, + 1769,1770,1771,1772,1773,1774,1775,1776,1777,1778,1779,1780,1781,1782,1783,1784, + 1785,1786,1787,1788,1789,1790,1791,1792,1793,1794,1795,1796,1797,1798,1799,1800, + 1801,1802,1803,1804,1805,1806,1807,1808,1809,1810,1811,1812,373,374,375,376, + 377,378,840,841,1813,1814,1815,1816,1817,1818,1819,1820,1821,1822,1823,1824, + 1825,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1840, + 1841,1842,1843,1844,1845,1846,1847,1848,1849,1850,1851,1852,1853,1854,1855,1856, + 1857,1858,1859,1860,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1872, + 1873,1874,1875,1876,1877,1878,1879,1505,1506,1880,1881,1882,1883,1884,1885,1886, + 1887,1888,1889,1890,1891,1892,1893,1894,1895,1896,1897,1898,1899,1900,1901,1902, + 1903,1904,1905,1906,1907,1908,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918, + 1919,1920,1921,1922,1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,1933,1934, + 1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1947,1948,1949,1950, + 1951,1601,1602,1603,1952,1953,1954,1955,1956,1957,1958,1959,1960,1961,1962,1963, + 1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979, + 1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995, + 1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011, + 2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027, + 2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043, + 2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2056,2057,2058,2059, + 2060,2061,2062,2063,2064,2065,2066,2067,2068,2069,2070,2071,2072,2073,2074,2075, + 2076,2077,2078,2079,2080,2081,2082,2083,2084,2085,2086,2087,2088,2089,2090,2091, + 2092,2093,62,63,64,65,66,1689,2094,2095,2096,2097,2098,2099,2100,2101, + 2102,93,94,2103,2104,2105,2106,2107,2108,2109,2110,2111,2112,2113,2114,2115, + 2116,2117,2118,2119,2120,2121,465,466,467,468,469,470,471,2122,2123,2124, + 2125,2126,2127,2128,2129,2130,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140, + 2141,2142,2143,2144,2145,2146,2147,2148,2149,2150,2151,2152,2153,2154,2155,2156, + 2157,2158,2159,2160,2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172, + 2173,2174,611,612,613,614,615,527,528,529,530,531,532,2175,2176,2177, + 2178,2179,2180,2181,2182,2183,2184,2185,2186,2187,2188,2189,2190,2191,2192,2193, + 2194,2195,2196,2197,2198,2199,2200,2201,2202,2203,2204,2205,2206,2207,2208,2209, + 2210,2211,2212,2213,2214,2215,2216,89,90,91,92,2217,2099,2100,2101,2102, + 93,94,2218,2219,2220,2221,2222,2223,2224,246,247,248,249,250,251,2225, + 2226,2227,2228,2229,2230,2231,2232,2233,2234,2235,2236,2237,2238,2239,2240,2241, + 2242,2243,2244,2245,2246,2247,2248,2249,2250,2251,2252,2253,2254,2255,2256,2257, + 2258,2259,2260,2261,2262,2263,2264,2265,2266,2267,2268,2269,2270,2271,2272,824, + 825,2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287, + 2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303, + 2304,2305,2306,2307,2308,2309,2310,2311,2312,2313,2314,2315,2316,2317,2318,2319, + 2320,2083,2084,2085,2086,2087,2088,2089,2321,2322,2323,2324,2325,2326,2327,2328, + 2329,2330,2331,2332,2333,2334,2335,2336,2337,2338,2339,2340,2341,2342,2343,2344, + 2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360, + 2361,2362,2363,2364,2365,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376, + 2377,2378,2379,2380,2381,2382,2383,2384,2385,2386,2387,2388,2389,2390,2391,2392, + 2393,2394,2395,2396,2397,2398,2399,2400,2401,2402,2403,2404,2405,2406,2407,2408, + 2409,2410,2411,2412,2413,2414,2415,2416,2417,2418,2419,2420,2421,2422,2423,2424, + 2425,2426,2427,2428,2429,2430,2431,2432,2433,2434,2435,2436,2035,2036,2037,2437, + 2438,2439,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453, + 2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,1378,1379,1380, + 1381,1382,1383,2315,2318,2467,2468,2469,2470,2471,2472,2473,2474,2475,472,473, + 474,475,476,477,478,479,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485, + 2486,2487,2488,2489,2490,2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501, + 2502,2503,2504,2505,2506,2507,2508,2509,2510,2511,2512,2513,2514,2515,2516,2517, + 2518,2519,2520,2521,2522,2523,2524,2525,2526,2527,2528,2529,2530,2531,2532,2533, + 2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547,2548,2549, + 2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565, + 2566,2567,261,262,263,264,265,2568,2569,2570,2571,2572,2573,2574,2575,2576, + 2577,2578,2579,261,262,263,264,2580,2581,2582,2583,2584,2585,2586,2587,2588, + 2589,2590,1957,1958,1959,1960,1961,1962,1963,2591,2592,2593,2594,2595,2596,2453, + 2454,2455,2463,2464,2465,2466,2597,2598,2599,2600,2601,2602,2603,2604,2605,2606, + 2607,2608,1674,1675,2609,2610,2611,2612,46,47,48,49,50,51,52,53, + 54,2613,2614,2615,2616,2617,2618,2619,2620,2621,2622,2623,2624,2625,2626,2627, + 2544,2545,2546,2547,2548,2549,2628,2629,2630,2631,2632,2633,2634,2635,2636,2637, + 2638,2639,2640,2641,2642,2643,2644,2645,2646,2647,2648,2649,2650,2651,2652,2653, + 2654,2655,2656,2657,2658,2659,2660,2661,2662,2663,624,625,626,627,2664,2665, + 2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2677,2678,2679,2680,2681, + 2682,2683,2684,2685,2686,2687,2688,2689,2690,2691,2692,2693,2694,2695,2696,2697, + 2698,2699,2700,2701,2702,2703,2704,2705,2706,2707,2708,2709,2710,2711,2712,2713, + 2714,2715,2716,2717,2718,2719,2720,2721,2722,2723,2724,2725,2726,2727,2728,2729, + 2730,2731,2732,2733,2734,2735,2736,2737,2738,2739,2740,2741,2742,2743,2744,2745, + 2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2756,2757,2758,2759,2760,2761, + 2762,2763,2764,2765,2766,2767,2768,2769,2770,2771,2772,2773,2774,2775,2776,2777, + 2778,2779,2780,2781,2782,2783,2784,2664,2665,2666,2785,2786,2787,2788,2789,2790, + 2791,2792,2793,2794,2795,2796,2797,2798,2799,2800,2801,2802,2803,2804,2805,2806, + 2807,2808,2809,2810,2811,2812,2813,2814,2815,2816,2817,2818,2819,2820,2821,2822, + 2823,2824,2825,2826,2827,1807,1808,1809,1810,2828,2829,2830,2831,2832,2833,2834, + 2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2846,2847,2848,2849,2850, + 2851,2852,2853,2854,2855,2856,2857,373,374,375,255,256,257,258,2858,2859, + 2860,2861,2862,2863,2864,2865,2866,2867,2868,2869,2870,2871,2872,2873,2874,2875, + 2876,2877,2878,2879,2880,2881,1635,1636,1637,1638,1639,1640,2882,2883,2884,2885, + 2886,2887,2888,2889,2890,2891,2892,2893,2894,2895,2896,2897,2898,2899,2900,2901, + 2902,2903,2904,2905,2906,2907,2908,2909,2910,2911,2912,2913,2914,2915,2916,2917, + 2918,2919,2920,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933, + 2934,2935,2936,2937,2938,2939,2039,2940,2941,2942,2943,2944,2945,2946,2947,1964, + 1965,1966,1967,1687,1688,1689,2094,2095,2096,2097,2948,2949,2950,2951,2952,2953, + 2954,2955,2956,2957,2226,2227,2228,2229,2958,2959,2960,2961,2962,2963,2964,2965, + 2966,2967,2968,2969,2970,1644,1645,1646,1647,1648,1649,1650,1651,341,2018,2019, + 2020,2021,2022,2023,2024,2971,2972,2973,2974,2975,2976,2977,2978,2979,2980,2981, + 2982,2983,2984,2985,2986,2987,2988,2989,2990,2991,2992,2993,2994,2995,2996,2997, + 2998,2999,524,525,526,537,538,3000,3001,3002,3003,3004,3005,3006,3007,3008, + 3009,3010,3011,3012,3013,3014,3015,3016,3017,3018,3019,3020,3021,3022,3023,137, + 138,139,3024,3025,3026,3027,3028,3029,3030,3031,3032,3033,3034,3035,3036,3037, + 3038,3039,3040,3041,3042,3043,3044,3045,3046,3047,3048,3049,3050,3051,3052,3053, + 3054,3055,2430,2431,2432,2433,2434,2435,2436,3056,195,196,197,198,199,200, + 201,202,3057,3058,3059,3060,3061,3062,3063, +}; + +typedef struct { unsigned short part, cite, voff, vlen; } Reading; +static const Reading readings[] = { + {0,0,0,5}, + {1,1,5,1}, + {0,2,6,7}, + {1,3,13,8}, + {0,4,21,6}, + {1,5,27,12}, + {0,6,39,6}, + {1,7,45,11}, + {1,8,56,6}, + {0,9,62,8}, + {1,10,70,7}, + {0,11,77,6}, + {1,12,83,6}, + {0,13,89,6}, + {1,14,95,7}, + {1,15,102,6}, + {0,16,108,11}, + {1,17,119,11}, + {0,18,130,7}, + {1,19,137,7}, + {0,20,144,9}, + {1,21,153,13}, + {0,22,166,8}, + {1,23,174,11}, + {0,24,185,4}, + {0,25,189,6}, + {1,26,195,8}, + {0,27,203,22}, + {1,28,225,3}, + {0,29,228,6}, + {1,30,234,13}, + {0,31,247,6}, + {1,32,253,3}, + {0,33,256,6}, + {1,34,262,5}, + {0,35,267,5}, + {1,36,272,3}, + {0,37,275,4}, + {1,38,279,11}, + {0,39,290,3}, + {1,40,293,5}, + {0,41,298,30}, + {1,42,328,10}, + {0,43,338,6}, + {1,44,344,10}, + {1,45,354,9}, + {1,46,363,7}, + {0,47,370,4}, + {1,48,374,6}, + {0,49,380,9}, + {1,50,389,16}, + {0,51,405,7}, + {0,52,412,24}, + {1,53,436,12}, + {0,54,448,12}, + {0,55,460,4}, + {1,56,464,9}, + {0,57,473,13}, + {1,58,486,13}, + {0,59,499,8}, + {1,60,507,6}, + {0,61,513,6}, + {1,62,519,9}, + {0,63,528,9}, + {1,64,537,10}, + {0,65,547,6}, + {1,66,553,10}, + {0,67,563,10}, + {1,68,573,11}, + {1,69,584,16}, + {0,70,600,6}, + {1,71,606,8}, + {1,72,614,13}, + {1,73,627,8}, + {1,74,635,15}, + {0,75,650,10}, + {1,76,660,9}, + {0,77,669,7}, + {0,78,676,5}, + {1,79,681,9}, + {1,80,690,12}, + {1,81,702,4}, + {0,82,706,6}, + {1,83,712,13}, + {0,84,725,17}, + {1,85,742,14}, + {0,86,756,35}, + {1,87,791,22}, + {0,88,813,9}, + {1,89,822,15}, + {1,90,837,8}, + {0,91,845,6}, + {1,92,851,13}, + {0,93,864,13}, + {1,94,877,20}, + {0,95,897,7}, + {1,96,904,7}, + {0,97,911,10}, + {1,98,921,38}, + {0,99,959,54}, + {1,100,1013,11}, + {0,101,1024,10}, + {1,102,1034,15}, + {1,103,1049,13}, + {0,104,1062,8}, + {1,105,1070,18}, + {0,106,1088,4}, + {1,107,1092,38}, + {1,108,1130,6}, + {1,109,1136,45}, + {0,110,1181,8}, + {1,111,1189,9}, + {0,112,1198,5}, + {1,113,1203,14}, + {1,114,1217,8}, + {0,115,1225,3}, + {1,116,1228,88}, + {0,117,1316,12}, + {1,118,1328,17}, + {0,119,1345,13}, + {1,120,1358,15}, + {0,121,1373,6}, + {1,122,1379,8}, + {0,123,1387,6}, + {1,124,1393,27}, + {0,125,1420,7}, + {1,126,1427,100}, + {0,127,1527,2}, + {1,128,1529,7}, + {0,129,1536,7}, + {1,130,1543,23}, + {0,131,1566,9}, + {1,132,1575,12}, + {0,133,1587,6}, + {1,134,1593,14}, + {0,135,1607,15}, + {1,136,1622,8}, + {0,137,1630,5}, + {1,138,1635,5}, + {0,139,1640,10}, + {1,140,1650,9}, + {0,141,1659,7}, + {1,142,1666,13}, + {0,143,1679,9}, + {0,144,1688,6}, + {1,145,1694,9}, + {0,146,1703,5}, + {1,147,1708,5}, + {0,148,1713,10}, + {1,149,1723,6}, + {1,150,1729,3}, + {0,151,1732,5}, + {1,152,1737,6}, + {0,153,1743,5}, + {1,154,1748,7}, + {0,155,1755,9}, + {1,156,1764,7}, + {1,157,1771,8}, + {0,158,1779,8}, + {0,159,1787,5}, + {1,160,1792,10}, + {0,161,1802,6}, + {1,162,1808,8}, + {0,163,1816,7}, + {1,164,1823,11}, + {0,165,1834,11}, + {1,166,1845,7}, + {1,167,1852,8}, + {0,168,1860,5}, + {1,169,1865,6}, + {0,170,1871,8}, + {1,171,1879,12}, + {0,172,1891,8}, + {1,173,1899,7}, + {0,174,1906,11}, + {1,175,1917,9}, + {0,176,1926,8}, + {1,177,1934,6}, + {0,178,1940,4}, + {1,179,1944,10}, + {0,180,1954,5}, + {1,181,1959,9}, + {0,182,1968,4}, + {1,183,1972,6}, + {0,184,1978,4}, + {1,185,1982,10}, + {0,186,1992,5}, + {0,187,1997,4}, + {1,188,2001,3}, + {1,189,2004,12}, + {0,190,2016,6}, + {1,191,2022,9}, + {0,192,2031,7}, + {1,193,2038,13}, + {0,194,2051,6}, + {1,195,2057,12}, + {1,196,2069,8}, + {0,197,2077,10}, + {1,198,2087,5}, + {0,199,2092,11}, + {0,200,2103,10}, + {1,201,2113,7}, + {1,202,2120,6}, + {0,203,2126,7}, + {1,204,2133,9}, + {0,205,2142,9}, + {1,206,2151,6}, + {0,207,2157,6}, + {1,208,2163,10}, + {0,209,2173,9}, + {1,210,2182,7}, + {0,211,2189,6}, + {1,212,2195,11}, + {0,213,2206,5}, + {0,214,2211,22}, + {1,215,2233,9}, + {1,216,2242,5}, + {1,217,2247,6}, + {0,218,2253,8}, + {1,219,2261,5}, + {1,220,2266,5}, + {0,221,2271,9}, + {1,222,2280,9}, + {0,223,2289,6}, + {0,224,2295,11}, + {1,225,2306,7}, + {0,226,2313,7}, + {1,227,2320,4}, + {0,228,2324,5}, + {1,229,2329,7}, + {0,230,2336,4}, + {1,231,2340,5}, + {0,232,2345,7}, + {0,233,2352,6}, + {1,234,2358,9}, + {1,235,2367,2}, + {0,236,2369,4}, + {1,237,2373,10}, + {1,238,2383,4}, + {0,239,2387,8}, + {1,240,2395,7}, + {0,241,2402,9}, + {0,242,2411,6}, + {1,243,2417,10}, + {1,244,2427,16}, + {0,245,2443,10}, + {1,246,2453,6}, + {0,247,2459,10}, + {1,248,2469,7}, + {0,249,2476,5}, + {1,250,2481,15}, + {0,251,2496,3}, + {1,252,2499,13}, + {0,253,2512,6}, + {1,254,2518,15}, + {0,255,2533,7}, + {1,256,2540,3}, + {0,257,2543,7}, + {1,258,2550,9}, + {0,259,2559,14}, + {1,260,2573,6}, + {0,261,2579,2}, + {0,262,2581,9}, + {0,263,2590,8}, + {1,264,2598,14}, + {0,265,2612,7}, + {1,266,2619,11}, + {0,267,2630,12}, + {1,268,2642,13}, + {0,269,2655,5}, + {1,270,2660,5}, + {0,271,2665,9}, + {1,272,2674,11}, + {0,273,2685,5}, + {1,274,2690,10}, + {0,275,2700,4}, + {0,276,2704,3}, + {1,277,2707,4}, + {0,278,2711,5}, + {0,279,2716,6}, + {1,280,2722,13}, + {0,281,2735,7}, + {0,282,2742,8}, + {0,283,2750,10}, + {1,284,2760,9}, + {0,285,2769,5}, + {1,286,2774,8}, + {0,287,2782,8}, + {0,288,2790,9}, + {0,289,2799,6}, + {0,290,2805,6}, + {1,291,2811,6}, + {0,292,2817,9}, + {1,293,2826,4}, + {0,294,2830,9}, + {1,295,2839,5}, + {1,296,2844,9}, + {0,297,2853,8}, + {1,298,2861,13}, + {0,299,2874,7}, + {1,300,2881,5}, + {0,301,2886,4}, + {1,302,2890,10}, + {1,303,2900,4}, + {0,304,2904,6}, + {1,305,2910,7}, + {0,306,2917,6}, + {0,307,2923,8}, + {1,308,2931,9}, + {1,309,2940,3}, + {0,310,2943,5}, + {0,311,2948,6}, + {1,312,2954,21}, + {0,313,2975,4}, + {1,314,2979,9}, + {0,315,2988,9}, + {1,316,2997,4}, + {0,317,3001,11}, + {0,318,3012,10}, + {1,319,3022,9}, + {1,320,3031,3}, + {0,321,3034,4}, + {1,322,3038,10}, + {0,323,3048,5}, + {0,324,3053,5}, + {0,325,3058,4}, + {1,326,3062,6}, + {0,327,3068,5}, + {1,328,3073,6}, + {0,329,3079,6}, + {0,330,3085,12}, + {1,331,3097,14}, + {0,332,3111,9}, + {1,333,3120,6}, + {1,334,3126,6}, + {0,335,3132,7}, + {1,336,3139,7}, + {0,337,3146,7}, + {1,338,3153,12}, + {1,339,3165,8}, + {0,340,3173,9}, + {1,341,3182,7}, + {1,342,3189,13}, + {0,343,3202,9}, + {0,344,3211,7}, + {0,345,3218,5}, + {1,346,3223,9}, + {0,347,3232,5}, + {0,348,3237,5}, + {1,349,3242,8}, + {0,350,3250,7}, + {0,351,3257,9}, + {1,352,3266,5}, + {1,353,3271,5}, + {1,354,3276,6}, + {0,355,3282,8}, + {1,356,3290,10}, + {0,357,3300,5}, +}; + +static const unsigned short readings_cite_la[] = { + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, + 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, + 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, + 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, + 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, + 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, + 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, + 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, + 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, + 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, + 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, + 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, + 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255, + 256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271, + 272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287, + 288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303, + 304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319, + 320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335, + 336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351, + 352,353,354,355,356,357, +}; + +static const unsigned short rpool[] = { + 0,1,2,3,2,3,2,3,2,3,4,5,2,3,2,3, + 2,3,2,3,2,3,6,7,4,8,9,10,11,12,13,14, + 15,6,7,16,17,18,19,20,21,22,23,24,15,25,26,27, + 28,29,30,9,10,31,32,9,10,20,21,33,34,35,36,37, + 38,39,40,41,42,43,44,41,45,28,24,15,6,46,47,21, + 48,28,6,46,6,46,6,46,49,50,49,50,49,50,49,50, + 49,50,49,50,51,14,52,53,54,12,52,53,52,53,55,56, + 52,53,52,53,57,58,57,58,24,15,59,60,61,62,63,64, + 65,66,67,68,69,70,71,72,73,74,75,76,77,76,78,79, + 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, + 96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, + 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127, + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, + 45,144,145,47,21,146,147,148,149,150,151,152,13,14,151,152, + 153,154,151,152,10,41,42,155,156,153,157,158,10,155,156,24, + 34,155,156,24,15,159,160,13,14,24,28,159,160,159,160,159, + 160,150,161,162,158,15,9,10,163,164,165,166,161,162,167,168, + 169,168,169,168,169,170,15,171,41,42,172,173,174,175,176,177, + 178,179,180,181,182,183,184,185,186,96,187,188,187,188,41,42, + 9,10,187,188,187,188,24,189,190,191,192,193,194,195,28,196, + 190,191,197,198,199,14,200,201,112,202,203,204,205,206,207,208, + 209,210,211,212,213,45,214,215,211,212,214,216,211,212,217,218, + 219,9,10,24,15,218,219,218,219,190,220,31,45,221,222,9, + 10,223,120,224,225,221,222,226,227,214,215,228,229,230,23,47, + 231,228,229,144,45,228,229,232,45,233,234,9,15,235,236,76, + 24,237,24,15,238,239,240,239,240,47,21,239,240,241,235,242, + 243,24,244,245,246,245,246,24,15,10,214,215,241,150,31,32, + 247,248,249,250,247,248,249,34,9,10,251,252,47,21,253,254, + 253,254,24,250,255,256,253,254,41,42,253,254,257,258,259,244, + 257,258,31,32,257,258,241,92,257,258,125,260,261,150,22,23, + 262,237,263,264,265,266,262,237,267,108,41,42,13,14,268,267, + 108,120,269,270,271,272,273,274,9,10,271,272,275,274,276,277, + 278,12,279,280,24,15,281,92,282,215,283,45,28,241,284,285, + 286,24,15,13,14,47,21,214,215,287,12,288,45,289,264,290, + 15,289,264,289,264,213,291,292,293,289,264,294,295,294,295,163, + 296,294,295,294,295,294,295,171,297,298,299,300,41,42,297,298, + 297,298,297,298,297,298,301,302,24,15,41,303,13,14,304,305, + 306,152,9,10,307,308,41,309,301,302,214,215,31,32,235,310, + 21,311,312,9,10,20,21,28,311,312,311,312,311,312,313,314, + 313,314,310,215,315,316,9,10,313,314,317,42,318,319,259,320, + 318,319,318,319,13,14,318,319,47,215,321,322,321,322,323,238, + 91,92,321,322,324,204,325,326,327,328,327,328,327,328,329,81, + 330,331,332,333,334,2,3,2,3,2,3,6,7,16,17,335, + 336,9,10,57,58,337,338,339,249,26,340,341,141,142,141,142, + 141,142,151,152,9,10,13,14,153,154,269,45,9,10,282,108, + 153,342,150,153,154,168,169,168,169,47,21,187,188,187,188,190, + 191,190,191,214,215,343,201,9,10,207,208,207,208,207,208,47, + 21,207,208,344,32,211,212,218,219,221,222,221,222,228,229,228, + 229,345,346,233,234,239,240,239,240,347,36,247,248,24,15,253, + 254,348,349,257,258,262,237,24,15,262,237,262,237,267,108,267, + 108,267,108,271,272,269,270,279,280,249,145,285,286,289,264,350, + 157,350,157,11,32,294,295,294,295,294,295,294,295,294,295,307, + 308,307,308,307,308,307,308,6,46,351,352,47,21,307,14,311, + 312,311,312,315,353,313,314,313,314,9,10,318,319,318,319,321, + 322,325,326,327,328,354,6,7,16,17,141,142,151,152,150,155, + 156,155,156,13,14,161,162,13,14,355,45,47,21,190,191,190, + 191,207,208,24,15,9,356,211,212,228,229,233,234,233,234,245, + 246,245,246,253,254,253,254,262,237,267,108,271,272,271,272,271, + 272,279,280,279,280,285,286,357,19,289,264,350,157,297,298,304, + 305,304,305,307,308,307,308,294,295,294,295,294,295,6,46,6, + 46,311,312,313,314,327,328,6,7,16,17,39,40,39,40,49, + 50,52,53,9,10,151,152,159,160,161,162,211,212,218,219,233, + 234,239,240,247,248,257,258,262,237,350,157,350,157,350,157,294, + 295,294,295,294,295,304,305,304,305,304,305,311,312,311,312,311, + 312,311,312,327,328,327,328,6,7,6,7,16,17,16,17,13, + 14,168,169,187,188,190,191,221,222,221,222,233,234,239,240,245, + 246,267,108,285,286,285,286,304,305,294,295,294,295,294,295,294, + 295,39,40,39,40,39,40,39,40,6,46,311,312,311,312,311, + 312,318,319,4,5,4,5,4,5,4,5,4,5,4,5,16, + 17,351,352,351,352,351,352,351,352,52,53,155,156,207,208,228, + 229,247,248,257,258,279,280,294,295,311,312,313,314,218,219,233, + 234,279,280,350,157,294,295,294,295,311,312,311,312,155,156,159, + 160,211,212,218,219,245,246,247,248,294,295,327,328,330,331,330, + 331,330,331,0,1,0,1,0,1,0,1,0,1,39,40,141, + 142,221,222,279,280,289,264,6,46,311,312,311,312,311,312,247, + 248,271,272,294,295,294,295,39,40,39,40,39,40,39,40,6, + 46,311,312,311,312,311,312,311,312,39,40,351,352,351,352,351, + 352,351,352,351,352,351,352,285,286,294,295,297,298,311,312,245, + 246,294,295,6,46,311,312,294,295,294,295,39,40,39,40,6, + 46,311,312,285,286,311,312,39,40, +}; + +typedef struct { unsigned short name; unsigned char colour; unsigned short roff, rlen; } Day; +static const Day days[] = { + {0,1,0,2}, + {1,1,2,2}, + {2,1,4,2}, + {3,1,6,2}, + {4,1,8,2}, + {5,1,10,2}, + {6,0,12,2}, + {7,0,14,2}, + {8,0,16,2}, + {9,0,18,2}, + {10,0,20,2}, + {11,0,22,2}, + {12,1,24,2}, + {13,1,26,2}, + {14,1,28,2}, + {15,2,30,2}, + {16,1,32,1}, + {17,0,33,2}, + {18,0,35,2}, + {19,2,37,2}, + {20,2,39,2}, + {21,2,41,2}, + {22,1,43,2}, + {23,2,45,2}, + {24,1,47,2}, + {25,0,49,2}, + {26,1,51,2}, + {27,1,53,2}, + {28,1,55,2}, + {29,2,57,2}, + {30,1,59,2}, + {31,2,61,2}, + {32,1,63,2}, + {33,0,65,2}, + {34,1,67,2}, + {35,2,69,2}, + {36,1,71,2}, + {37,1,73,1}, + {38,1,74,2}, + {39,0,76,2}, + {40,1,78,2}, + {41,1,80,1}, + {42,1,81,1}, + {43,0,82,2}, + {44,0,84,2}, + {45,0,86,2}, + {46,3,88,2}, + {47,3,90,2}, + {48,3,92,2}, + {49,3,94,2}, + {50,3,96,2}, + {51,3,98,2}, + {52,1,100,2}, + {53,3,102,2}, + {54,2,104,2}, + {55,3,106,2}, + {56,3,108,2}, + {57,1,110,2}, + {58,3,112,2}, + {59,3,114,2}, + {60,3,116,2}, + {61,3,118,2}, + {62,1,120,2}, + {63,3,122,2}, + {64,3,124,2}, + {65,3,126,2}, + {66,3,128,2}, + {67,3,130,2}, + {68,3,132,1}, + {69,3,133,2}, + {70,3,135,1}, + {71,3,136,1}, + {72,3,137,1}, + {73,3,138,2}, + {74,3,140,2}, + {75,3,142,2}, + {76,3,144,1}, + {77,1,145,1}, + {78,3,146,2}, + {79,3,148,2}, + {80,3,150,2}, + {81,3,152,2}, + {82,3,154,1}, + {83,1,155,2}, + {84,3,157,2}, + {85,3,159,2}, + {86,3,161,2}, + {87,3,163,2}, + {88,3,165,2}, + {89,3,167,1}, + {90,3,168,2}, + {91,3,170,2}, + {92,3,172,1}, + {93,3,173,1}, + {94,3,174,2}, + {95,3,176,2}, + {96,3,178,1}, + {97,3,179,2}, + {98,3,181,2}, + {99,3,183,2}, + {100,3,185,2}, + {101,3,187,2}, + {102,3,189,2}, + {103,1,191,2}, + {104,1,193,2}, + {105,1,195,2}, + {106,1,197,2}, + {107,1,199,2}, + {108,1,201,2}, + {109,1,203,2}, + {110,1,205,2}, + {111,1,207,2}, + {112,2,209,2}, + {113,1,211,2}, + {114,1,213,2}, + {115,1,215,2}, + {116,1,217,1}, + {117,1,218,2}, + {118,1,220,2}, + {119,1,222,2}, + {120,2,224,2}, + {121,1,226,2}, + {122,1,228,1}, + {123,1,229,2}, + {124,1,231,2}, + {125,2,233,2}, + {126,1,235,2}, + {127,1,237,2}, + {128,1,239,2}, + {129,1,241,2}, + {130,1,243,2}, + {131,1,245,2}, + {132,1,247,2}, + {133,1,249,2}, + {134,1,251,2}, + {135,1,253,2}, + {136,1,255,2}, + {137,1,257,1}, + {138,1,258,2}, + {139,1,260,2}, + {140,1,262,2}, + {141,1,264,2}, + {142,1,266,2}, + {143,1,268,2}, + {144,1,270,1}, + {145,1,271,2}, + {146,1,273,2}, + {147,1,275,2}, + {148,1,277,2}, + {149,2,279,1}, + {150,1,280,2}, + {151,2,282,2}, + {152,2,284,2}, + {153,2,286,2}, + {154,2,288,2}, + {155,2,290,2}, + {156,2,292,2}, + {157,2,294,2}, + {158,2,296,2}, + {159,1,298,2}, + {160,0,300,2}, + {161,1,302,2}, + {162,2,304,2}, + {163,1,306,2}, + {164,0,308,2}, + {165,1,310,2}, + {166,0,312,2}, + {167,3,314,2}, + {168,1,316,2}, + {169,1,318,1}, + {170,2,319,1}, + {171,1,320,2}, + {172,3,322,2}, + {173,2,324,2}, + {174,2,326,2}, + {175,2,328,2}, + {176,1,330,2}, + {177,2,332,2}, + {178,0,334,2}, + {179,1,336,2}, + {180,0,338,2}, + {181,1,340,2}, + {182,1,342,2}, + {183,0,344,2}, + {184,2,346,2}, + {185,0,348,2}, + {186,2,350,1}, + {187,0,351,2}, + {188,1,353,2}, + {189,1,355,2}, + {190,0,357,2}, + {191,0,359,2}, + {192,2,361,2}, + {193,1,363,2}, + {194,0,365,2}, + {195,1,367,2}, + {196,1,369,2}, + {197,1,371,2}, + {198,0,373,2}, + {199,2,375,2}, + {200,1,377,2}, + {201,0,379,2}, + {202,2,381,2}, + {203,2,383,2}, + {204,0,385,2}, + {205,1,387,2}, + {206,0,389,2}, + {207,2,391,2}, + {208,0,393,2}, + {209,1,395,2}, + {210,1,397,1}, + {211,1,398,2}, + {212,1,400,2}, + {213,1,402,2}, + {214,2,404,1}, + {215,0,405,2}, + {216,0,407,2}, + {217,1,409,2}, + {218,0,411,2}, + {219,1,413,2}, + {220,1,415,2}, + {221,1,417,2}, + {222,0,419,2}, + {223,0,421,2}, + {224,1,423,2}, + {225,1,425,1}, + {226,1,426,2}, + {227,1,428,2}, + {228,1,430,2}, + {229,0,432,2}, + {230,1,434,2}, + {231,0,436,2}, + {232,1,438,2}, + {233,2,440,2}, + {234,2,442,2}, + {235,2,444,2}, + {236,0,446,2}, + {237,0,448,2}, + {238,1,450,2}, + {239,1,452,2}, + {240,0,454,2}, + {241,1,456,2}, + {242,0,458,2}, + {243,0,460,2}, + {244,1,462,2}, + {245,0,464,2}, + {246,1,466,2}, + {247,0,468,2}, + {248,1,470,2}, + {249,0,472,2}, + {250,2,474,2}, + {251,1,476,2}, + {252,2,478,2}, + {253,0,480,2}, + {254,1,482,2}, + {255,2,484,2}, + {256,0,486,2}, + {257,0,488,2}, + {258,1,490,2}, + {259,2,492,2}, + {260,3,494,1}, + {261,0,495,2}, + {262,3,497,1}, + {263,3,498,2}, + {264,0,500,2}, + {265,1,502,2}, + {266,1,504,2}, + {267,0,506,2}, + {268,1,508,2}, + {269,1,510,2}, + {270,1,512,2}, + {271,0,514,2}, + {272,1,516,2}, + {273,1,518,2}, + {274,1,520,2}, + {275,1,522,2}, + {276,1,524,1}, + {277,1,525,2}, + {278,0,527,2}, + {279,1,529,2}, + {280,2,531,2}, + {281,1,533,2}, + {282,1,535,2}, + {283,1,537,2}, + {284,2,539,2}, + {285,0,541,2}, + {286,1,543,2}, + {287,0,545,2}, + {288,0,547,2}, + {289,1,549,2}, + {290,1,551,2}, + {291,0,553,2}, + {292,1,555,2}, + {293,0,557,2}, + {294,2,559,2}, + {295,0,561,2}, + {296,0,563,2}, + {297,0,565,2}, + {298,1,567,1}, + {299,0,568,2}, + {300,5,570,2}, + {301,1,572,2}, + {302,0,574,2}, + {303,0,576,2}, + {304,0,578,2}, + {305,0,580,2}, + {306,1,582,2}, + {307,1,584,2}, + {308,1,586,2}, + {309,2,588,2}, + {310,0,590,2}, + {311,1,592,2}, + {312,1,594,2}, + {313,0,596,2}, + {314,1,598,2}, + {315,1,600,2}, + {316,1,602,2}, + {317,1,604,2}, + {318,1,606,1}, + {319,2,607,2}, + {320,0,609,2}, + {321,1,611,2}, + {322,2,613,2}, + {323,1,615,1}, + {324,0,616,2}, + {325,0,618,2}, + {326,0,620,2}, + {327,3,622,2}, + {328,3,624,2}, + {329,2,626,2}, + {330,1,628,2}, + {331,1,630,2}, + {332,3,632,2}, + {333,1,634,2}, + {334,3,636,2}, + {335,1,638,2}, + {336,3,640,2}, + {337,3,642,2}, + {338,1,644,2}, + {339,3,646,2}, + {340,2,648,2}, + {341,3,650,2}, + {342,3,652,2}, + {343,2,654,2}, + {344,3,656,2}, + {345,3,658,2}, + {346,3,660,2}, + {347,3,662,2}, + {348,3,664,2}, + {349,3,666,2}, + {350,3,668,2}, + {351,3,670,2}, + {352,1,672,2}, + {353,2,674,2}, + {354,1,676,1}, + {355,1,677,2}, + {356,1,679,2}, + {357,1,681,2}, + {358,0,683,2}, + {359,0,685,2}, + {360,2,687,2}, + {361,1,689,2}, + {362,3,691,2}, + {363,3,693,2}, + {364,3,695,1}, + {365,2,696,2}, + {366,2,698,2}, + {367,1,700,2}, + {368,1,702,2}, + {369,1,704,2}, + {370,1,706,2}, + {371,1,708,2}, + {372,2,710,2}, + {373,2,712,2}, + {374,2,714,2}, + {375,1,716,2}, + {376,1,718,2}, + {377,2,720,2}, + {378,1,722,1}, + {379,2,723,2}, + {380,1,725,2}, + {381,1,727,2}, + {382,1,729,2}, + {383,0,731,2}, + {384,0,733,2}, + {385,0,735,2}, + {386,0,737,2}, + {387,1,739,2}, + {388,2,741,2}, + {389,1,743,2}, + {390,0,745,2}, + {391,0,747,2}, + {392,0,749,2}, + {393,2,751,2}, + {394,0,753,2}, + {395,1,755,2}, + {396,0,757,2}, + {397,0,759,2}, + {398,0,761,2}, + {399,0,763,2}, + {400,0,765,2}, + {401,0,767,2}, + {402,2,769,2}, + {403,0,771,2}, + {404,0,773,2}, + {405,0,775,2}, + {406,2,777,2}, + {407,0,779,2}, + {408,1,781,2}, + {409,0,783,2}, + {410,2,785,2}, + {411,0,787,2}, + {412,0,789,2}, + {413,1,791,2}, + {414,0,793,2}, + {415,0,795,2}, + {416,0,797,2}, + {417,0,799,2}, + {418,0,801,2}, + {419,0,803,2}, + {420,2,805,2}, + {421,0,807,2}, + {422,2,809,2}, + {423,0,811,2}, + {424,0,813,2}, + {425,0,815,2}, + {293,0,817,2}, + {426,1,819,2}, + {427,0,821,2}, + {428,0,823,2}, + {310,0,825,2}, + {429,0,827,2}, + {430,0,829,2}, + {431,0,831,2}, + {432,0,833,2}, + {433,0,835,2}, + {434,0,837,2}, + {325,0,839,2}, + {435,0,841,2}, + {436,1,843,2}, + {437,2,845,2}, + {438,0,847,2}, + {439,0,849,2}, + {440,2,851,2}, + {441,3,853,2}, + {442,3,855,2}, + {443,1,857,2}, + {444,3,859,2}, + {445,3,861,2}, + {446,3,863,2}, + {447,2,865,2}, + {448,3,867,2}, + {449,2,869,1}, + {6,0,870,2}, + {450,0,872,2}, + {451,1,874,2}, + {452,1,876,2}, + {453,1,878,1}, + {454,1,879,2}, + {455,1,881,2}, + {456,2,883,2}, + {457,1,885,2}, + {458,1,887,2}, + {459,1,889,2}, + {460,1,891,2}, + {461,0,893,2}, + {462,0,895,2}, + {463,0,897,2}, + {464,2,899,2}, + {465,1,901,2}, + {466,0,903,2}, + {467,0,905,2}, + {468,0,907,2}, + {469,0,909,2}, + {470,0,911,2}, + {471,0,913,2}, + {472,0,915,2}, + {473,0,917,2}, + {474,0,919,2}, + {475,0,921,2}, + {476,0,923,2}, + {477,0,925,2}, + {478,0,927,2}, + {479,0,929,2}, + {480,0,931,2}, + {481,0,933,2}, + {482,2,935,2}, + {483,0,937,2}, + {484,0,939,2}, + {485,0,941,2}, + {486,0,943,2}, + {429,0,945,2}, + {487,0,947,2}, + {488,0,949,2}, + {489,0,951,2}, + {325,0,953,2}, + {326,0,955,2}, + {490,0,957,2}, + {491,0,959,2}, + {492,0,961,2}, + {493,3,963,2}, + {494,3,965,2}, + {7,0,967,2}, + {495,0,969,2}, + {496,0,971,2}, + {497,0,973,2}, + {498,3,975,2}, + {499,3,977,2}, + {500,1,979,2}, + {501,1,981,2}, + {502,1,983,2}, + {503,1,985,2}, + {504,0,987,2}, + {505,0,989,2}, + {506,0,991,2}, + {507,0,993,2}, + {508,0,995,2}, + {509,0,997,2}, + {510,0,999,2}, + {295,0,1001,2}, + {296,0,1003,2}, + {297,0,1005,2}, + {511,0,1007,2}, + {485,0,1009,2}, + {304,0,1011,2}, + {427,0,1013,2}, + {428,0,1015,2}, + {512,0,1017,2}, + {490,0,1019,2}, + {513,0,1021,2}, + {514,0,1023,2}, + {515,0,1025,2}, + {2,1,1027,2}, + {3,1,1029,2}, + {8,0,1031,2}, + {9,0,1033,2}, + {516,0,1035,2}, + {517,0,1037,2}, + {518,1,1039,2}, + {519,1,1041,2}, + {520,0,1043,2}, + {521,0,1045,2}, + {522,0,1047,2}, + {523,0,1049,2}, + {524,0,1051,2}, + {525,0,1053,2}, + {526,0,1055,2}, + {527,0,1057,2}, + {528,0,1059,2}, + {529,0,1061,2}, + {430,0,1063,2}, + {487,0,1065,2}, + {431,0,1067,2}, + {488,0,1069,2}, + {434,0,1071,2}, + {530,0,1073,2}, + {531,0,1075,2}, + {489,0,1077,2}, + {324,0,1079,2}, + {513,0,1081,2}, + {532,0,1083,2}, + {533,0,1085,2}, + {534,0,1087,2}, + {535,3,1089,2}, + {358,0,1091,2}, + {6,0,1093,2}, + {7,0,1095,2}, + {8,0,1097,2}, + {9,0,1099,2}, + {10,0,1101,2}, + {17,0,1103,2}, + {536,0,1105,2}, + {43,0,1107,2}, + {44,0,1109,2}, + {45,0,1111,2}, + {537,3,1113,2}, + {538,1,1115,2}, + {539,0,1117,2}, + {540,0,1119,2}, + {541,0,1121,2}, + {542,0,1123,2}, + {543,0,1125,2}, + {484,0,1127,2}, + {489,0,1129,2}, + {544,3,1131,2}, + {545,0,1133,2}, + {546,0,1135,2}, + {547,0,1137,2}, + {548,0,1139,2}, + {302,0,1141,2}, + {303,0,1143,2}, + {549,0,1145,2}, + {491,0,1147,2}, + {550,1,1149,2}, + {551,1,1151,2}, + {552,0,1153,2}, + {553,0,1155,2}, + {554,0,1157,2}, + {555,0,1159,2}, + {305,0,1161,2}, + {556,3,1163,2}, + {1,1,1165,2}, + {2,1,1167,2}, + {3,1,1169,2}, + {355,1,1171,2}, + {356,1,1173,2}, + {357,1,1175,2}, + {1,1,1177,2}, + {10,0,1179,2}, + {557,0,1181,2}, + {558,1,1183,2}, + {559,0,1185,2}, + {560,0,1187,2}, + {561,0,1189,2}, + {530,0,1191,2}, + {562,0,1193,2}, + {563,0,1195,2}, + {564,0,1197,2}, + {565,0,1199,2}, + {566,0,1201,2}, + {530,0,1203,2}, + {531,0,1205,2}, + {490,0,1207,2}, + {513,0,1209,2}, + {514,0,1211,2}, + {549,0,1213,2}, + {563,0,1215,2}, + {567,0,1217,2}, + {568,0,1219,2}, + {569,0,1221,2}, + {570,0,1223,2}, + {571,0,1225,2}, + {572,0,1227,2}, + {573,0,1229,2}, + {574,0,1231,2}, + {575,0,1233,2}, + {576,0,1235,2}, + {577,0,1237,2}, + {578,0,1239,2}, + {548,0,1241,2}, + {511,0,1243,2}, + {434,0,1245,2}, + {579,0,1247,2}, + {512,0,1249,2}, + {324,0,1251,2}, + {580,0,1253,2}, + {432,0,1255,2}, + {433,0,1257,2}, + {325,0,1259,2}, + {326,0,1261,2}, + {515,0,1263,2}, + {581,0,1265,2}, + {582,0,1267,2}, + {583,0,1269,2}, + {584,0,1271,2}, +}; + +static const unsigned short cal[NDAYS] = { + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, + 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, + 48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, + 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79, + 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95, + 96,97,98,99,100,101,102,96,97,98,99,100,101,103,104,105, + 106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121, + 122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137, + 138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153, + 154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169, + 170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185, + 186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201, + 202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217, + 218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233, + 234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249, + 250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265, + 266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281, + 282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297, + 298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313, + 314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329, + 330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345, + 346,347,348,349,350,351,352,353,354,4,355,356,357,0,2,3, + 4,355,5,7,8,9,10,11,358,12,13,14,15,16,18,359, + 19,20,21,22,23,25,360,26,27,28,29,30,46,32,48,34, + 35,36,37,53,361,40,41,42,58,59,60,61,362,63,64,65, + 66,67,68,54,70,71,72,73,74,75,76,363,78,79,80,81, + 82,364,84,85,86,87,88,89,90,91,77,93,94,95,96,97, + 83,99,100,101,102,96,97,98,99,100,101,103,104,105,106,107, + 108,109,110,365,366,367,368,369,116,117,370,371,372,121,373,374, + 124,375,111,112,113,114,115,131,376,118,134,120,136,122,138,377, + 125,141,142,128,378,145,379,132,133,380,381,151,152,153,154,155, + 156,157,158,159,382,383,384,163,149,150,166,385,386,387,388,171, + 389,390,391,392,161,162,393,394,180,395,167,168,169,170,396,187, + 173,174,175,176,177,397,194,398,181,182,198,184,399,201,400,188, + 189,401,206,192,208,402,195,196,197,403,199,215,216,202,203,404, + 205,405,222,223,209,210,211,212,213,229,406,231,217,407,219,220, + 236,408,409,224,225,226,227,243,410,230,411,232,233,234,412,413, + 414,238,239,415,241,257,416,244,417,246,418,248,264,250,251,252, + 419,254,255,271,420,258,260,421,262,263,278,422,265,266,423,268, + 269,285,424,272,273,274,275,276,425,426,279,280,281,282,283,299, + 427,286,302,303,289,290,292,428,429,294,430,431,432,298,300,433, + 301,434,435,436,39,306,307,308,309,437,311,438,439,314,315,316, + 317,318,320,440,321,322,323,441,442,327,443,444,329,330,331,445, + 334,446,335,337,447,338,448,341,342,449,344,345,346,347,348,450, + 350,451,351,352,353,4,452,356,357,1,0,3,4,355,356,5, + 8,9,10,11,358,453,12,13,14,15,18,359,454,19,20,21, + 22,46,24,360,26,27,28,29,53,31,32,56,34,35,36,60, + 38,361,63,64,65,66,67,68,69,70,71,72,73,74,52,76, + 54,78,79,80,81,82,364,84,85,86,87,88,89,90,91,92, + 93,94,95,96,97,98,99,77,101,102,96,97,98,99,100,101, + 103,104,105,106,107,108,109,110,83,455,367,368,369,116,117,370, + 365,366,121,456,457,124,458,459,371,372,129,373,131,460,375,111, + 112,113,114,138,461,376,141,142,120,378,145,123,377,125,126,381, + 151,152,153,154,155,156,157,158,159,160,462,139,163,463,464,166, + 144,382,465,466,171,149,390,391,392,467,387,388,468,180,469,470, + 183,161,162,393,187,165,395,167,168,169,170,194,172,173,174,175, + 176,177,201,179,471,181,182,206,184,208,186,472,188,189,403,473, + 215,193,402,195,196,197,405,222,200,474,202,203,475,205,229,207, + 231,209,210,211,212,236,214,406,476,217,477,219,220,221,408,411, + 224,225,226,412,228,410,230,478,232,233,257,235,413,417,238,239, + 479,264,480,481,244,419,246,482,271,483,250,251,252,484,254,278, + 485,420,260,259,262,263,285,486,422,265,266,487,268,425,270,488, + 272,273,274,275,299,277,489,279,280,281,282,490,284,427,286,310, + 491,289,313,492,433,493,294,435,436,292,298,300,494,301,495,496, + 39,497,306,307,308,309,498,438,312,439,314,315,316,317,320,319, + 440,321,322,323,499,327,328,443,500,329,330,331,334,333,446,335, + 447,339,338,341,340,449,344,343,346,347,348,349,450,451,501,351, + 352,4,354,452,357,1,2,0,4,355,356,357,5,9,10,11, + 358,453,502,12,13,14,18,16,454,503,19,20,21,25,23,24, + 360,26,27,28,504,30,31,32,505,34,35,39,37,38,361,40, + 41,42,46,47,48,49,50,51,506,53,507,52,508,54,58,59, + 60,61,362,63,64,65,66,67,68,69,70,71,72,73,74,75, + 76,363,78,79,80,77,82,364,84,85,86,83,88,89,90,91, + 92,93,94,95,96,97,98,99,100,101,102,96,97,98,99,100, + 101,103,104,105,106,107,108,109,110,373,374,460,375,111,112,117, + 114,115,509,376,118,457,124,458,122,123,377,125,126,131,128,510, + 130,379,132,133,138,461,511,141,142,139,140,145,464,147,144,382, + 381,151,152,153,154,155,156,157,158,159,468,389,469,163,164,161, + 166,393,386,165,395,171,168,390,170,392,172,173,174,175,180,177, + 470,179,512,181,182,187,184,513,186,191,188,189,194,398,192,193, + 402,195,196,201,400,199,200,401,202,203,208,205,472,207,514,209, + 210,211,212,213,214,406,515,217,222,219,220,221,408,475,224,229, + 226,227,228,410,230,516,236,233,234,235,413,477,238,243,517,241, + 411,247,244,249,412,518,248,253,250,251,252,257,254,255,260,420, + 262,263,264,480,481,486,422,265,266,271,268,269,270,421,272,273, + 278,275,276,277,423,279,280,285,282,283,284,427,286,291,425,289, + 290,519,520,521,294,292,522,523,298,300,524,301,490,525,526,527, + 306,307,308,313,492,311,312,439,314,315,438,317,318,319,440,321, + 322,320,528,529,530,443,531,329,327,331,444,333,446,335,445,334, + 338,336,340,447,339,343,341,342,449,344,450,346,347,351,352,353, + 354,452,532,533,4,0,356,357,1,2,5,11,358,453,502,534, + 535,12,18,14,15,16,536,537,19,25,21,22,23,24,360,26, + 46,28,29,30,31,32,506,53,35,36,37,38,361,40,60,42, + 362,63,64,65,66,67,68,69,70,52,72,54,74,75,76,363, + 78,79,80,81,82,364,84,85,86,87,88,89,90,91,92,93, + 94,95,77,97,98,99,100,101,102,96,97,98,99,100,101,103, + 104,105,106,107,108,109,110,83,455,538,368,365,366,117,370,119, + 509,121,456,371,124,458,373,374,460,375,111,131,113,114,115,135, + 376,118,138,120,511,141,142,377,125,145,146,128,539,130,379,151, + 152,153,154,155,156,157,158,159,463,464,384,163,382,540,166,148, + 149,150,466,171,541,390,388,468,389,469,178,394,180,162,393,183, + 165,395,167,168,169,170,190,172,173,174,175,176,177,542,179,543, + 181,201,400,184,204,186,206,188,208,544,472,192,193,402,195,215, + 197,545,199,200,515,202,222,223,205,546,207,475,209,229,211,212, + 213,214,406,516,236,237,219,220,221,408,242,243,225,226,227,228, + 410,230,412,232,233,234,235,413,256,257,239,547,241,261,418,244, + 264,246,481,248,419,250,251,271,483,254,260,421,262,263,278,485, + 548,549,486,422,265,285,424,268,269,270,487,272,425,274,275,276, + 277,521,279,299,281,282,283,284,427,286,490,525,289,290,310,491, + 550,292,551,552,553,298,300,554,504,555,556,557,558,306,307,39, + 309,559,311,312,439,314,438,316,317,318,319,440,321,320,323,560, + 561,562,443,499,327,330,331,500,333,446,335,334,563,338,337,340, + 339,448,341,342,449,344,345,346,347,348,351,352,353,354,452,533, + 4,355,0,357,1,2,3,5,564,565,566,567,568,569,18,13, + 14,15,16,537,570,25,20,21,22,23,24,360,504,27,28,29, + 30,31,32,39,34,35,36,37,38,361,438,41,42,571,572,573, + 574,46,47,48,49,50,52,508,53,507,55,57,575,58,59,60, + 62,362,63,64,65,66,67,68,69,70,71,72,73,74,75,77, + 363,78,79,80,81,83,364,84,85,86,87,88,89,90,91,92, + 93,94,95,96,97,98,99,100,101,102,96,97,98,99,100,101, + 103,104,105,106,107,108,109,110,112,113,114,115,369,376,117,370, + 120,509,122,123,377,124,126,459,128,576,130,379,131,133,510,134, + 135,136,462,138,140,463,141,142,144,382,145,146,148,149,150,381, + 151,152,153,154,155,156,157,158,159,161,162,393,163,165,395,166, + 168,169,170,466,171,173,390,175,176,177,577,179,394,180,182,470, + 184,512,186,396,187,189,513,190,192,193,402,194,196,197,542,199, + 200,399,201,203,471,205,401,207,578,208,210,211,212,213,214,406, + 215,217,545,219,220,221,408,222,224,225,226,227,228,410,229,579, + 232,233,234,235,413,236,238,239,476,241,477,242,243,517,246,411, + 248,580,250,412,252,414,260,255,262,263,257,259,547,417,261,486, + 422,265,266,481,268,269,270,482,271,273,274,275,276,277,581,278, + 280,281,282,283,284,427,285,424,287,289,290,487,291,292,294,582, + 295,296,298,300,299,301,489,302,303,304,306,490,308,309,527,311, + 312,439,313,315,316,317,318,319,440,320,322,323,583,324,325,443, + 327,329,330,331,584,333,446,335,563,336,338,447,340,448,341,343, + 449,344,345,346,347,348,349,351,352,353,354,452,4,355,356,0, + 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, + 33,34,35,36,37,38,46,40,41,42,50,51,506,53,507,55, + 56,575,58,52,60,54,362,63,64,65,66,67,68,69,70,71, + 72,73,74,75,76,363,78,79,80,81,82,364,77,85,86,87, + 88,89,83,91,92,93,94,95,96,97,98,99,100,101,102,96, + 97,98,99,100,101,103,104,105,106,107,108,109,110,371,372,367, + 373,374,460,117,111,112,113,114,115,457,124,118,459,120,576,122, + 123,131,125,126,134,128,136,130,138,132,133,141,142,143,378,145, + 139,140,463,464,381,151,152,153,154,155,156,157,158,159,160,387, + 388,163,389,469,166,385,161,162,393,171,165,390,167,168,169,170, + 178,172,173,174,175,176,177,185,179,187,181,182,190,184,585,186, + 194,188,189,542,198,192,193,201,195,196,197,401,199,200,208,202, + 203,586,205,403,207,215,209,210,211,212,213,214,222,223,217,546, + 219,220,221,229,579,224,225,226,227,228,236,230,409,232,233,234, + 235,243,517,238,239,247,241,249,412,244,414,246,478,248,256,250, + 251,252,417,254,255,479,264,258,259,260,419,262,263,271,265,266, + 587,268,269,270,278,272,273,274,275,276,277,285,279,280,281,282, + 283,284,425,286,488,519,289,290,588,292,522,294,589,590,524,298, + 490,300,301,527,310,491,550,306,307,308,309,434,311,312,438,314, + 315,316,317,318,319,320,321,322,323,591,531,592,327,328,329,330, + 331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346, + 347,348,349,350,351,352,353,354,4,355,356,357,0,2,3,4, + 355,5,7,8,9,10,11,358,12,13,14,15,16,18,359,19, + 20,21,22,23,46,360,26,27,28,29,30,53,32,55,34,35, + 36,37,60,361,40,63,64,65,66,67,68,69,70,71,72,73, + 74,75,54,363,78,79,80,81,82,364,84,85,86,87,88,89, + 90,91,92,93,94,95,96,97,98,99,77,101,102,96,97,98, + 99,100,101,103,104,105,106,107,108,109,110,83,455,367,368,369, + 116,117,370,365,366,121,456,457,124,458,459,371,372,129,373,131, + 460,375,111,112,113,114,138,461,376,141,142,120,378,145,123,377, + 125,126,381,151,152,153,154,155,156,157,158,159,160,462,139,163, + 463,464,166,144,382,465,466,171,149,390,391,392,467,387,388,468, + 180,469,470,183,161,162,393,187,165,395,167,168,169,170,194,172, + 173,174,175,176,177,201,179,471,181,182,206,184,208,186,472,188, + 189,403,473,215,193,402,195,196,197,405,222,200,474,202,203,475, + 205,229,207,231,209,210,211,212,236,214,406,476,217,477,219,220, + 221,408,411,224,225,226,412,228,410,230,478,232,233,257,235,413, + 417,238,239,479,264,480,481,244,419,246,482,271,483,250,251,252, + 484,254,278,485,420,260,259,262,263,285,486,422,265,266,487,268, + 425,270,488,272,273,274,275,299,277,489,279,280,281,282,490,284, + 427,286,310,491,289,313,492,433,493,294,435,436,292,298,300,494, + 301,495,496,39,497,306,307,308,309,498,438,312,439,314,315,316, + 317,320,319,440,321,322,323,499,327,328,443,500,329,330,331,334, + 333,446,335,447,339,338,341,340,449,344,343,346,347,348,349,450, + 451,501,351,352,4,354,452,357,1,2,0,4,355,356,357,5, + 9,10,11,358,453,502,12,13,14,18,16,454,503,19,20,21, + 25,23,24,360,26,27,28,504,30,31,32,505,34,35,39,37, + 38,361,40,41,42,46,47,48,49,50,51,506,53,507,52,508, + 54,58,59,60,61,362,63,64,65,66,67,68,69,70,71,72, + 73,74,75,76,363,78,79,77,81,82,364,84,85,83,87,88, + 89,90,91,92,93,94,95,96,97,98,99,100,101,102,96,97, + 98,99,100,101,103,104,105,106,107,108,109,110,374,460,375,111, + 112,113,114,115,119,376,118,456,120,124,122,123,377,125,126,593, + 131,594,130,379,132,133,137,138,461,511,141,142,140,463,145,146, + 144,382,380,381,151,152,153,154,155,156,157,158,159,389,469,384, + 163,161,162,166,385,165,395,167,171,168,390,391,172,173,174,175, + 176,180,595,179,183,181,182,396,187,596,186,190,188,189,397,194, + 192,193,402,195,196,197,201,199,200,204,202,203,578,208,544,207, + 586,209,210,211,215,213,214,406,404,217,405,222,220,221,408,597, + 224,225,229,227,228,410,230,598,232,236,234,235,413,240,238,239, + 243,241,245,411,244,580,246,412,248,414,250,251,252,256,257,255, + 547,260,258,262,263,264,480,486,422,265,266,482,271,269,270,587, + 272,273,274,278,276,277,549,279,280,281,285,283,284,427,286,487, + 291,425,290,488,519,520,294,588,292,522,298,300,590,301,599,490, + 525,526,306,307,308,309,313,311,312,439,314,315,316,320,318,319, + 440,321,322,323,327,328,444,443,584,329,330,334,563,333,446,335, + 339,448,341,342,340,344,345,346,347,348,349,350,450,501,600,351, + 352,353,354,452,601,602,603,0,604,605,606,607,5,608,11,358, + 453,502,534,12,13,18,15,16,503,536,19,20,25,22,23,24, + 360,26,27,504,29,30,31,32,609,34,46,36,37,38,361,40, + 41,53,507,55,56,575,58,59,60,61,362,63,64,54,66,67, + 68,69,70,71,72,73,74,75,76,363,78,79,80,81,82,364, + 84,85,86,87,77,89,90,91,92,93,83,95,96,97,98,99, + 100,101,102,96,97,98,99,100,101,103,104,105,106,107,108,109, + 110,610,455,367,368,371,372,117,373,374,460,375,111,112,124,114, + 115,127,376,118,593,131,594,122,123,377,125,126,138,128,511,141, + 142,132,133,145,146,147,539,462,139,151,152,153,154,155,156,157, + 158,159,149,150,384,163,164,387,166,468,389,469,466,171,161,390, + 393,392,165,395,167,168,180,170,470,172,173,174,175,187,177,513, + 179,191,181,182,194,184,611,186,198,188,189,201,400,192,193,402, + 195,196,208,544,199,200,514,202,203,215,205,545,207,404,209,210, + 211,212,213,214,406,475,217,229,219,220,221,408,598,224,236,226, + 227,228,410,230,242,243,233,234,235,413,580,238,412,518,241,253, + 478,244,256,257,416,248,417,250,251,252,264,254,255,260,420,262, + 263,271,483,612,486,422,265,266,278,268,269,270,423,272,273,285, + 275,276,277,613,279,280,425,282,283,284,427,286,588,299,289,290, + 302,303,304,294,292,428,429,298,300,431,301,313,492,433,493,306, + 307,308,39,614,311,312,439,314,315,438,317,318,319,440,321,322, + 320,615,616,617,443,441,329,327,331,444,333,446,335,445,334,338, + 336,340,447,339,343,341,342,449,344,450,346,347,351,352,353,354, + 452,532,533,4,0,356,357,1,2,5,11,358,453,502,534,535, + 12,18,14,15,16,536,537,19,46,21,22,23,24,360,26,53, + 28,29,30,31,32,59,60,35,36,63,64,65,66,67,68,69, + 70,71,72,73,74,75,76,363,52,79,54,81,82,364,84,85, + 86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101, + 102,96,97,98,99,100,101,103,104,105,106,107,108,109,110,83, + 455,367,368,369,116,117,370,119,538,121,365,366,124,458,459,127, + 576,129,371,131,594,373,374,460,375,111,138,113,114,141,142,376, + 118,145,120,147,122,123,377,151,152,153,154,155,156,157,158,159, + 160,383,384,163,462,139,166,463,464,465,144,171,541,390,148,149, + 150,577,178,394,180,388,468,389,469,185,396,187,162,393,190,165, + 395,167,168,169,170,542,172,173,174,175,176,177,204,179,206,181, + 208,544,184,586,186,403,188,215,216,545,192,193,402,195,222,197, + 474,199,200,475,202,229,579,205,618,207,598,209,236,211,212,213, + 214,406,242,243,517,219,220,221,408,249,412,225,226,227,228,410, + 230,257,232,233,234,235,413,479,264,239,481,241,419,619,244,271, + 246,612,248,421,250,251,278,485,254,260,423,262,263,285,424,287, + 288,486,422,265,425,426,268,269,270,521,272,299,274,275,276,277, + 304,279,490,281,282,283,284,427,286,313,492,289,290,434,435,436, + 292,620,621,494,298,300,496,504,622,623,624,625,306,307,39,309, + 626,311,312,439,314,438,316,317,318,319,440,321,320,323,627,628, + 629,443,630,327,330,331,500,333,446,335,334,563,338,337,340,339, + 448,341,342,449,344,345,346,347,348,351,352,353,354,452,533,4, + 355,0,357,1,2,3,5,564,565,566,567,568,569,18,13,14, + 15,16,537,570,25,20,21,22,23,24,360,504,27,28,29,30, + 31,32,39,34,35,36,37,38,361,46,41,42,49,50,51,506, + 53,507,55,56,575,52,508,60,61,362,63,64,65,66,67,68, + 69,70,71,72,73,74,75,76,363,78,79,80,81,82,364,77, + 85,86,87,88,89,83,91,92,93,94,95,96,97,98,99,100, + 101,102,96,97,98,99,100,101,103,104,105,106,107,108,109,110, + 371,372,367,373,374,460,117,111,112,113,114,115,457,124,118,459, + 120,576,122,123,131,125,126,134,128,136,130,138,132,133,141,142, + 143,378,145,139,140,463,464,381,151,152,153,154,155,156,157,158, + 159,160,387,388,163,389,469,166,385,161,162,393,171,165,390,167, + 168,169,170,178,172,173,174,175,176,177,185,179,187,181,182,190, + 184,585,186,194,188,189,542,198,192,193,201,195,196,197,401,199, + 200,208,202,203,586,205,403,207,215,209,210,211,212,213,214,222, + 223,217,546,219,220,221,229,579,224,225,226,227,228,236,230,409, + 232,233,234,235,243,517,238,239,247,241,249,412,244,414,246,478, + 248,256,250,251,252,417,254,255,479,264,258,259,260,419,262,263, + 271,265,266,587,268,269,270,278,272,273,274,275,276,277,285,279, + 280,281,282,283,284,425,286,488,519,289,290,588,292,522,294,589, + 590,524,298,490,300,301,527,310,491,550,306,307,308,309,434,311, + 312,438,314,315,316,317,318,319,320,321,322,323,591,531,592,327, + 328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343, + 344,345,346,347,348,349,350,351,352,353,354,4,355,356,357,0, + 2,3,4,355,5,7,8,9,10,11,358,12,13,14,15,16, + 18,359,19,20,21,22,23,25,360,26,27,28,29,30,46,32, + 48,34,35,36,37,53,361,40,41,42,58,59,60,61,362,63, + 64,65,66,67,68,54,70,71,72,73,74,75,76,363,78,79, + 80,81,82,364,84,85,86,87,88,89,90,91,77,93,94,95, + 96,97,83,99,100,101,102,96,97,98,99,100,101,103,104,105, + 106,107,108,109,110,365,366,367,368,369,116,117,370,371,372,121, + 373,374,124,375,111,112,113,114,115,131,376,118,134,120,136,122, + 138,377,125,141,142,128,378,145,379,132,133,380,381,151,152,153, + 154,155,156,157,158,159,382,383,384,163,149,150,166,385,386,387, + 388,171,389,390,391,392,161,162,393,394,180,395,167,168,169,170, + 396,187,173,174,175,176,177,397,194,398,181,182,198,184,399,201, + 400,188,189,401,206,192,208,402,195,196,197,403,199,215,216,202, + 203,404,205,405,222,223,209,210,211,212,213,229,406,231,217,407, + 219,220,236,408,409,224,225,226,227,243,410,230,411,232,233,234, + 412,413,414,238,239,415,241,257,416,244,417,246,418,248,264,250, + 251,252,419,254,255,271,420,258,260,421,262,263,278,422,265,266, + 423,268,269,285,424,272,273,274,275,276,425,426,279,280,281,282, + 283,299,427,286,302,303,289,290,292,428,429,294,430,431,432,298, + 300,433,301,434,435,436,39,306,307,308,309,437,311,438,439,314, + 315,316,317,318,320,440,321,322,323,441,442,327,443,444,329,330, + 331,445,334,446,335,337,447,338,448,341,342,449,344,345,346,347, + 348,450,350,451,351,352,353,4,452,356,357,1,0,3,4,355, + 356,5,8,9,10,11,358,453,12,13,14,15,18,359,454,19, + 20,21,22,25,24,360,26,27,28,29,504,31,32,631,34,35, + 36,39,38,361,40,41,42,45,438,632,633,634,635,636,637,46, + 52,508,54,50,51,57,53,507,55,56,62,58,59,60,61,362, + 63,64,65,66,67,68,69,70,71,77,73,74,75,76,363,83, + 79,80,81,82,364,84,85,86,87,88,89,90,91,92,93,94, + 95,96,97,98,99,100,101,102,96,97,98,99,100,101,103,104, + 105,106,107,108,109,110,114,376,118,368,120,116,117,123,377,125, + 126,456,128,124,130,379,132,133,129,593,131,594,462,139,140,463, + 464,138,144,382,141,142,148,149,145,146,147,539,387,388,151,152, + 153,154,155,156,157,158,159,165,395,167,163,168,170,166,172,173, + 174,175,171,177,390,179,392,181,182,178,184,180,186,470,188,189, + 185,396,187,193,402,195,196,197,397,194,200,611,202,203,543,205, + 201,207,471,209,210,211,212,208,214,406,586,217,403,219,220,221, + 408,218,224,225,226,222,228,410,230,597,232,233,229,235,413,618, + 238,239,516,236,237,409,244,240,246,242,243,517,250,251,252,580, + 254,412,518,420,260,259,262,263,257,486,422,265,266,418,268,264, + 270,481,272,273,274,275,271,277,612,279,280,281,282,278,284,427, + 286,423,638,289,285,424,287,288,294,487,291,292,298,300,295,301, + 297,639,299,640,306,307,308,309,305,490,312,439,314,315,316,317, + 320,319,440,321,322,323,641,327,328,443,500,329,330,331,334,333, + 446,335,447,339,338,341,340,449,344,343,346,347,348,349,450,451, + 501,351,352,4,354,452,357,1,2,0,4,355,356,357,5,9, + 10,11,358,453,502,12,13,14,18,16,454,503,19,20,21,25, + 23,24,360,26,27,28,504,30,31,32,505,34,35,46,37,38, + 361,40,41,42,53,507,55,56,575,58,59,60,61,52,63,54, + 65,66,67,68,69,70,71,72,73,74,75,76,363,78,79,80, + 81,82,364,84,85,86,77,88,89,90,91,92,83,94,95,96, + 97,98,99,100,101,102,96,97,98,99,100,101,103,104,105,106, + 107,108,109,110,610,455,367,371,372,116,117,374,460,375,111,112, + 113,114,115,459,376,118,129,120,131,122,123,377,125,126,137,138, + 461,130,141,142,133,378,145,146,147,462,139,140,151,152,153,154, + 155,156,157,158,159,150,383,384,163,387,388,166,389,469,465,466, + 171,162,390,391,165,395,167,168,169,180,595,172,173,174,175,176, + 187,596,179,190,181,182,397,194,398,186,542,188,189,399,201,192, + 193,402,195,196,197,208,199,200,586,202,203,473,215,216,207,218, + 209,210,211,222,213,214,406,597,217,642,229,220,221,408,407,224, + 225,236,227,228,410,230,477,232,243,234,235,413,247,238,239,412, + 241,414,253,244,415,246,257,248,547,250,251,252,479,264,255,481, + 260,258,262,263,271,483,486,422,265,266,581,278,269,270,549,272, + 273,274,285,276,277,288,279,280,281,425,283,284,427,286,521,588, + 299,290,489,302,303,294,305,292,428,298,300,430,301,432,313,492, + 433,306,307,308,309,438,311,312,439,314,315,316,320,318,319,440, + 321,322,323,327,328,444,443,584,329,330,334,563,333,446,335,339, + 448,341,342,340,344,345,346,347,348,349,350,450,501,600,351,352, + 353,354,452,601,602,603,0,604,605,606,607,5,608,11,358,453, + 502,534,12,13,18,15,16,503,536,19,20,25,22,23,24,360, + 26,27,46,29,30,31,32,51,34,53,36,37,38,361,40,41, + 60,61,362,63,64,65,66,67,68,69,52,71,54,73,74,75, + 76,363,78,79,80,81,82,364,84,85,86,87,88,89,90,91, + 92,93,94,95,77,97,98,99,100,101,102,96,97,98,99,100, + 101,103,104,105,106,107,108,109,110,83,455,538,368,365,366,117, + 370,119,509,121,456,371,124,458,373,374,460,375,111,131,113,114, + 115,135,376,118,138,120,511,141,142,377,125,145,146,128,539,130, + 379,151,152,153,154,155,156,157,158,159,463,464,384,163,382,540, + 166,148,149,150,466,171,541,390,388,468,389,469,178,394,180,162, + 393,183,165,395,167,168,169,170,190,172,173,174,175,176,177,542, + 179,543,181,201,400,184,204,186,206,188,208,544,472,192,193,402, + 195,215,197,545,199,200,515,202,222,223,205,546,207,475,209,229, + 211,212,213,214,406,516,236,237,219,220,221,408,242,243,225,226, + 227,228,410,230,412,232,233,234,235,413,256,257,239,547,241,261, + 418,244,264,246,481,248,419,250,251,271,483,254,260,421,262,263, + 278,485,548,549,486,422,265,285,424,268,269,270,487,272,425,274, + 275,276,277,521,279,299,281,282,283,284,427,286,490,525,289,290, + 310,491,550,292,551,552,553,298,300,554,504,555,556,557,558,306, + 307,39,309,559,311,312,439,314,438,316,317,318,319,440,321,320, + 323,560,561,562,443,499,327,330,331,500,333,446,335,334,563,338, + 337,340,339,448,341,342,449,344,345,346,347,348,351,352,353,354, + 452,533,4,355,0,357,1,2,3,5,564,565,566,567,568,569, + 18,13,14,15,16,537,570,25,20,21,22,23,24,360,504,27, + 28,29,30,31,32,39,34,35,36,37,38,361,438,41,42,571, + 572,573,574,46,47,48,49,50,52,508,53,507,55,57,575,58, + 59,60,62,362,63,64,65,66,67,68,69,70,71,72,73,74, + 75,77,363,78,79,80,81,83,364,84,85,86,87,88,89,90, + 91,92,93,94,95,96,97,98,99,100,101,102,96,97,98,99, + 100,101,103,104,105,106,107,108,109,110,112,113,114,115,369,376, + 117,370,120,509,122,123,377,124,126,459,128,576,130,379,131,133, + 510,134,135,136,462,138,140,463,141,142,144,382,145,146,148,149, + 150,381,151,152,153,154,155,156,157,158,159,161,162,393,163,165, + 395,166,168,169,170,466,171,173,390,175,176,177,577,179,394,180, + 182,470,184,512,186,396,187,189,513,190,192,193,402,194,196,197, + 542,199,200,399,201,203,471,205,401,207,578,208,210,211,212,213, + 214,406,215,217,545,219,220,221,408,222,224,225,226,227,228,410, + 229,579,232,233,234,235,413,236,238,239,476,241,477,242,243,517, + 246,411,248,580,250,412,252,414,260,255,262,263,257,259,547,417, + 261,486,422,265,266,481,268,269,270,482,271,273,274,275,276,277, + 581,278,280,281,282,283,284,427,285,424,287,289,290,487,291,292, + 294,582,295,296,298,300,299,301,489,302,303,304,306,490,308,309, + 527,311,312,439,313,315,316,317,318,319,440,320,322,323,583,324, + 325,443,327,329,330,331,584,333,446,335,563,336,338,447,340,448, + 341,343,449,344,345,346,347,348,349,351,352,353,354,452,4,355, + 356,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, + 15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, + 31,32,47,34,35,36,37,38,53,40,41,42,575,58,59,60, + 61,362,63,64,65,52,67,54,69,70,71,72,73,74,75,76, + 363,78,79,80,81,82,364,84,85,86,87,88,89,90,77,92, + 93,94,95,96,83,98,99,100,101,102,96,97,98,99,100,101, + 103,104,105,106,107,108,109,110,366,455,367,368,369,116,117,371, + 372,509,373,374,460,124,111,112,113,114,115,593,131,118,510,120, + 135,122,123,138,125,126,141,142,143,130,145,132,133,539,380,381, + 151,152,153,154,155,156,157,158,159,160,383,148,163,150,540,166, + 385,387,388,468,171,469,390,391,161,162,393,178,165,180,167,168, + 169,170,185,172,173,174,175,176,177,585,179,194,181,182,542,184, + 543,186,201,188,189,204,401,192,193,208,195,196,197,514,199,200, + 215,202,203,218,205,515,207,222,209,210,211,212,213,214,229,579, + 217,618,219,220,221,236,237,224,225,226,227,228,243,230,245,232, + 233,234,235,412,518,238,239,478,241,256,257,244,547,246,261,248, + 479,250,251,252,267,254,255,482,271,258,259,260,421,262,263,278, + 265,266,549,268,269,270,285,272,273,274,275,276,277,425,279,280, + 281,282,283,284,299,286,489,302,289,290,305,292,428,294,643,430, + 431,298,313,300,301,493,434,435,436,306,307,308,309,644,311,312, + 438,314,315,316,317,318,319,320,321,322,323,645,441,442,327,328, + 329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344, + 345,346,347,348,349,350,351,352,353,354,4,355,356,357,0,2, + 3,4,355,5,7,8,9,10,11,358,12,13,14,15,16,18, + 359,19,20,21,22,23,46,360,26,27,28,29,30,53,32,55, + 34,35,36,37,60,361,40,63,64,65,66,67,68,69,70,71, + 72,73,74,75,54,363,78,79,80,81,82,364,84,85,86,87, + 88,89,90,91,92,93,94,95,96,97,98,77,100,101,102,96, + 97,98,99,100,101,103,104,105,106,107,108,109,110,83,455,367, + 368,369,538,117,365,366,509,121,456,457,124,458,371,372,576,373, + 374,131,375,111,112,113,114,115,138,376,118,141,142,143,122,145, + 377,125,126,380,128,151,152,153,154,155,156,157,158,159,462,139, + 140,163,464,540,166,382,386,465,148,171,150,390,391,392,387,388, + 468,389,180,595,470,161,162,393,396,187,395,167,168,169,170,397, + 194,173,174,175,176,177,399,201,400,181,182,401,184,578,208,544, + 188,189,514,403,192,215,402,195,196,197,515,199,222,223,202,203, + 597,205,642,229,579,209,210,211,212,213,236,406,409,217,240,219, + 220,243,408,245,224,225,226,227,412,410,230,253,232,233,234,257, + 413,547,238,239,418,241,264,480,244,267,246,619,248,271,250,251, + 252,421,254,255,278,420,258,260,423,262,263,285,422,265,266,613, + 268,269,425,426,272,273,274,275,276,299,640,279,280,281,282,283, + 490,427,286,527,310,289,290,292,551,552,294,646,647,554,298,300, + 556,301,558,648,649,39,306,307,308,309,650,311,438,439,314,315, + 316,317,318,320,440,321,322,323,651,499,327,443,444,329,330,331, + 445,334,446,335,337,447,338,448,341,342,449,344,345,346,347,348, + 450,350,451,351,352,353,4,452,356,357,1,0,3,4,355,356, + 5,8,9,10,11,358,453,12,13,14,15,18,359,454,19,20, + 21,22,25,24,360,26,27,28,29,504,31,32,631,34,35,36, + 39,38,361,40,41,42,45,46,47,48,49,50,51,506,53,52, + 508,54,575,58,57,60,61,362,63,64,65,66,67,68,69,70, + 71,72,73,74,75,76,363,78,79,77,81,82,364,84,85,83, + 87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102, + 96,97,98,99,100,101,103,104,105,106,107,108,109,110,374,460, + 375,111,112,113,114,115,119,376,118,456,120,124,122,123,377,125, + 126,593,131,594,130,379,132,133,137,138,461,511,141,142,140,463, + 145,146,144,382,380,381,151,152,153,154,155,156,157,158,159,389, + 469,384,163,161,162,166,385,165,395,167,171,168,390,391,172,173, + 174,175,176,180,595,179,183,181,182,396,187,596,186,190,188,189, + 397,194,192,193,402,195,196,197,201,199,200,204,202,203,578,208, + 544,207,586,209,210,211,215,213,214,406,404,217,405,222,220,221, + 408,597,224,225,229,227,228,410,230,598,232,236,234,235,413,240, + 238,239,243,241,245,411,244,580,246,412,248,414,250,251,252,256, + 257,255,547,260,258,262,263,264,480,486,422,265,266,482,271,269, + 270,587,272,273,274,278,276,277,549,279,280,281,285,283,284,427, + 286,487,291,425,290,488,519,520,294,588,292,522,298,300,590,301, + 599,490,525,526,306,307,308,309,313,311,312,439,314,315,316,320, + 318,319,440,321,322,323,327,328,444,443,584,329,330,334,563,333, + 446,335,339,448,341,342,340,344,345,346,347,348,349,350,450,501, + 600,351,352,353,354,452,601,602,603,0,604,605,606,607,5,608, + 11,358,453,502,534,12,13,18,15,16,503,536,19,20,25,22, + 23,24,360,26,27,504,29,30,31,32,609,34,46,36,37,38, + 361,40,41,53,507,55,56,575,58,59,60,61,362,63,64,54, + 66,67,68,69,70,71,72,73,74,75,76,363,78,79,80,81, + 82,364,84,85,86,87,77,89,90,91,92,93,83,95,96,97, + 98,99,100,101,102,96,97,98,99,100,101,103,104,105,106,107, + 108,109,110,610,455,367,368,371,372,117,373,374,460,375,111,112, + 124,114,115,127,376,118,593,131,594,122,123,377,125,126,138,128, + 511,141,142,132,133,145,146,147,539,462,139,151,152,153,154,155, + 156,157,158,159,149,150,384,163,164,387,166,468,389,469,466,171, + 161,390,393,392,165,395,167,168,180,170,470,172,173,174,175,187, + 177,513,179,191,181,182,194,184,611,186,198,188,189,201,400,192, + 193,402,195,196,208,544,199,200,514,202,203,215,205,545,207,404, + 209,210,211,212,213,214,406,475,217,229,219,220,221,408,598,224, + 236,226,227,228,410,230,242,243,233,234,235,413,580,238,412,518, + 241,253,478,244,256,257,416,248,417,250,251,252,264,254,255,260, + 420,262,263,271,483,612,486,422,265,266,278,268,269,270,423,272, + 273,285,275,276,277,613,279,280,425,282,283,284,427,286,588,299, + 289,290,302,303,304,294,292,428,429,298,300,431,301,313,492,433, + 493,306,307,308,39,614,311,312,439,314,315,438,317,318,319,440, + 321,322,320,615,616,617,443,441,329,327,331,444,333,446,335,445, + 334,338,336,340,447,339,343,341,342,449,344,450,346,347,351,352, + 353,354,452,532,533,4,0,356,357,1,2,5,11,358,453,502, + 534,535,12,18,14,15,16,536,537,19,46,21,22,23,24,360, + 26,53,28,29,30,31,32,59,60,35,36,63,64,65,66,67, + 68,69,70,71,72,73,74,75,76,363,52,79,54,81,82,364, + 84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99, + 100,101,102,96,97,98,99,100,101,103,104,105,106,107,108,109, + 110,83,455,367,368,369,116,117,370,119,538,121,365,366,124,458, + 459,127,576,129,371,131,594,373,374,460,375,111,138,113,114,141, + 142,376,118,145,120,147,122,123,377,151,152,153,154,155,156,157, + 158,159,160,383,384,163,462,139,166,463,464,465,144,171,541,390, + 148,149,150,577,178,394,180,388,468,389,469,185,396,187,162,393, + 190,165,395,167,168,169,170,542,172,173,174,175,176,177,204,179, + 206,181,208,544,184,586,186,403,188,215,216,545,192,193,402,195, + 222,197,474,199,200,475,202,229,579,205,618,207,598,209,236,211, + 212,213,214,406,242,243,517,219,220,221,408,249,412,225,226,227, + 228,410,230,257,232,233,234,235,413,479,264,239,481,241,419,619, + 244,271,246,612,248,421,250,251,278,485,254,260,423,262,263,285, + 424,287,288,486,422,265,425,426,268,269,270,521,272,299,274,275, + 276,277,304,279,490,281,282,283,284,427,286,313,492,289,290,434, + 435,436,292,620,621,494,298,300,496,504,622,623,624,625,306,307, + 39,309,626,311,312,439,314,438,316,317,318,319,440,321,320,323, + 627,628,629,443,630,327,330,331,500,333,446,335,334,563,338,337, + 340,339,448,341,342,449,344,345,346,347,348,351,352,353,354,452, + 533,4,355,0,357,1,2,3,5,564,565,566,567,568,569,18, + 13,14,15,16,537,570,25,20,21,22,23,24,360,504,27,28, + 29,30,31,32,39,34,35,36,37,38,361,46,41,42,49,50, + 51,506,53,507,55,56,575,52,508,60,61,362,63,64,65,66, + 67,68,69,70,71,72,73,74,75,76,363,78,79,80,81,82, + 77,84,85,86,87,88,83,90,91,92,93,94,95,96,97,98, + 99,100,101,102,96,97,98,99,100,101,103,104,105,106,107,108, + 109,110,372,455,373,374,460,375,117,112,113,114,115,456,376,124, + 458,120,127,122,123,377,131,126,510,128,135,130,379,138,133,511, + 141,142,143,462,145,140,463,464,380,144,151,152,153,154,155,156, + 157,158,159,387,388,468,163,469,540,166,161,162,393,466,171,395, + 390,168,169,170,577,172,173,180,175,176,177,512,179,396,187,182, + 513,184,191,186,397,194,189,611,542,192,193,402,201,196,197,204, + 199,200,578,208,203,472,205,514,207,473,215,210,211,212,213,214, + 406,222,217,474,219,220,221,408,229,224,225,226,227,228,410,236, + 237,232,233,234,235,413,243,238,239,411,241,580,249,412,518,246, + 253,248,415,250,257,252,547,260,255,262,263,264,259,481,267,419, + 486,422,265,266,612,268,269,270,581,278,273,274,275,276,277,652, + 285,280,281,282,283,284,427,425,426,488,289,290,521,588,292,294, + 523,589,590,298,300,490,301,526,527,310,491,306,313,308,309,493, + 311,312,439,438,315,316,317,318,319,440,320,322,323,530,591,531, + 443,327,329,330,331,584,333,446,335,563,336,338,447,340,448,341, + 343,449,344,345,346,347,348,349,351,352,353,354,452,4,355,356, + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, + 32,47,34,35,36,37,38,53,40,41,42,575,58,59,60,61, + 362,63,64,65,52,67,54,69,70,71,72,73,74,75,76,363, + 78,79,80,81,82,364,84,85,86,87,88,89,90,91,77,93, + 94,95,96,97,83,99,100,101,102,96,97,98,99,100,101,103, + 104,105,106,107,108,109,110,365,366,367,368,369,116,117,370,371, + 372,121,373,374,124,375,111,112,113,114,115,131,376,118,134,120, + 136,122,138,377,125,141,142,128,378,145,379,132,133,380,381,151, + 152,153,154,155,156,157,158,159,382,383,384,163,149,150,166,385, + 386,387,388,171,389,390,391,392,161,162,393,394,180,395,167,168, + 169,170,396,187,173,174,175,176,177,397,194,398,181,182,198,184, + 399,201,400,188,189,401,206,192,208,402,195,196,197,403,199,215, + 216,202,203,404,205,405,222,223,209,210,211,212,213,229,406,231, + 217,407,219,220,236,408,409,224,225,226,227,243,410,230,411,232, + 233,234,412,413,414,238,239,415,241,257,416,244,417,246,418,248, + 264,250,251,252,419,254,255,271,420,258,260,421,262,263,278,422, + 265,266,423,268,269,285,424,272,273,274,275,276,425,426,279,280, + 281,282,283,299,427,286,302,303,289,290,292,428,429,294,430,431, + 432,298,300,433,301,434,435,436,39,306,307,308,309,437,311,438, + 439,314,315,316,317,318,320,440,321,322,323,441,442,327,443,444, + 329,330,331,445,334,446,335,337,447,338,448,341,342,449,344,345, + 346,347,348,450,350,451,351,352,353,4,452,356,357,1,0,3, + 4,355,356,5,8,9,10,11,358,453,12,13,14,15,18,359, + 454,19,20,21,22,25,24,360,26,27,28,29,504,31,32,631, + 34,35,36,39,38,361,40,41,42,45,46,47,48,49,50,51, + 506,53,52,508,54,575,58,57,60,61,362,63,64,65,66,67, + 68,69,70,71,72,73,74,75,76,363,78,77,80,81,82,364, + 84,83,86,87,88,89,90,91,92,93,94,95,96,97,98,99, + 100,101,102,96,97,98,99,100,101,103,104,105,106,107,108,109, + 110,460,375,111,112,113,114,117,370,376,118,121,120,457,124,123, + 377,125,126,129,128,131,130,379,132,133,136,137,138,461,462,141, + 142,463,464,145,144,382,539,380,148,151,152,153,154,155,156,157, + 158,159,469,383,384,163,162,393,166,165,395,167,168,171,170,390, + 172,173,174,175,176,177,180,179,470,181,182,185,184,187,186,513, + 188,189,585,397,194,193,402,195,196,197,399,201,200,471,202,203, + 206,205,208,207,472,209,210,211,212,215,214,406,218,217,515,219, + 220,221,408,546,224,225,226,229,228,410,230,407,232,233,236,235, + 413,476,238,239,242,243,517,245,244,247,246,249,412,518,250,251, + 252,415,254,257,416,420,260,259,262,263,264,486,422,265,266,619, + 268,271,270,612,272,273,274,275,278,277,548,279,280,281,282,285, + 284,427,286,613,487,289,425,426,488,519,294,521,588,292,298,300, + 589,301,524,599,490,525,306,307,308,309,550,313,312,439,314,315, + 316,317,320,319,440,321,322,323,326,327,328,443,500,329,330,331, + 334,333,446,335,447,339,338,341,340,449,344,343,346,347,348,349, + 450,451,501,351,352,4,354,452,357,1,2,0,4,355,356,357, + 5,9,10,11,358,453,502,12,13,14,18,16,454,503,19,20, + 21,25,23,24,360,26,27,28,504,30,31,32,505,34,35,46, + 37,38,361,40,41,42,53,507,55,56,575,58,59,60,61,52, + 63,54,65,66,67,68,69,70,71,72,73,74,75,76,363,78, + 79,80,81,82,364,84,85,86,77,88,89,90,91,92,83,94, + 95,96,97,98,99,100,101,102,96,97,98,99,100,101,103,104, + 105,106,107,108,109,110,610,455,367,371,372,116,117,374,460,375, + 111,112,113,114,115,459,376,118,129,120,131,122,123,377,125,126, + 137,138,461,130,141,142,133,378,145,146,147,462,139,140,151,152, + 153,154,155,156,157,158,159,150,383,384,163,387,388,166,389,469, + 465,466,171,162,390,391,165,395,167,168,169,180,595,172,173,174, + 175,176,187,596,179,190,181,182,397,194,398,186,542,188,189,399, + 201,192,193,402,195,196,197,208,199,200,586,202,203,473,215,216, + 207,218,209,210,211,222,213,214,406,597,217,642,229,220,221,408, + 407,224,225,236,227,228,410,230,477,232,243,234,235,413,247,238, + 239,412,241,414,253,244,415,246,257,248,547,250,251,252,479,264, + 255,481,260,258,262,263,271,483,486,422,265,266,581,278,269,270, + 549,272,273,274,285,276,277,288,279,280,281,425,283,284,427,286, + 521,588,299,290,489,302,303,294,305,292,428,298,300,430,301,432, + 313,492,433,306,307,308,309,438,311,312,439,314,315,316,320,318, + 319,440,321,322,323,327,328,444,443,584,329,330,334,563,333,446, + 335,339,448,341,342,340,344,345,346,347,348,349,350,450,501,600, + 351,352,353,354,452,601,602,603,0,604,605,606,607,5,608,11, + 358,453,502,534,12,13,18,15,16,503,536,19,20,25,22,23, + 24,360,26,27,46,29,30,31,32,51,34,53,36,37,38,361, + 40,41,60,61,362,63,64,65,66,67,68,69,52,71,54,73, + 74,75,76,363,78,79,80,81,82,364,84,85,86,87,88,89, + 90,91,92,93,94,95,77,97,98,99,100,83,102,96,97,98, + 99,100,101,103,104,105,106,107,108,109,110,610,538,367,365,366, + 116,117,370,119,509,121,371,372,124,373,374,460,375,111,112,131, + 114,115,134,376,118,137,138,461,122,141,142,125,126,145,128,147, + 130,379,132,151,152,153,154,155,156,157,158,159,464,383,144,163, + 164,540,166,149,150,465,466,171,387,390,468,389,469,577,178,161, + 180,393,470,165,395,167,168,187,170,513,172,173,174,175,194,177, + 611,179,198,181,182,201,184,471,186,401,188,189,208,544,192,193, + 402,195,196,215,216,199,200,404,202,203,222,205,474,207,597,209, + 210,211,212,213,214,406,598,217,236,219,220,221,408,477,224,243, + 226,227,228,410,230,249,412,233,234,235,413,415,238,257,416,241, + 417,261,244,479,264,480,248,267,250,251,252,271,254,255,260,420, + 262,263,278,485,548,486,422,265,266,285,268,269,270,613,272,273, + 425,275,276,277,520,279,280,299,282,283,284,427,286,305,490,289, + 290,527,310,491,294,292,551,552,298,300,647,301,504,555,556,557, + 306,307,308,39,497,311,312,439,314,315,438,317,318,319,440,321, + 322,320,653,560,561,443,651,329,327,331,444,333,446,335,445,334, + 338,336,340,447,339,343,341,342,449,344,450,346,347,351,352,353, + 354,452,532,533,4,0,356,357,1,2,5,11,358,453,502,534, + 535,12,18,14,15,16,536,537,19,25,21,22,23,24,360,26, + 504,28,29,30,31,32,654,39,35,36,37,38,361,40,438,42, + 633,571,572,573,637,46,47,48,49,52,508,54,53,507,57,56, + 575,58,59,60,62,362,63,64,65,66,67,68,69,70,71,72, + 73,74,75,77,363,78,79,80,81,83,364,84,85,86,87,88, + 89,90,91,92,93,94,95,96,97,98,99,100,101,102,96,97, + 98,99,100,101,103,104,105,106,107,108,109,110,112,113,114,115, + 369,376,117,370,120,509,122,123,377,124,126,459,128,576,130,379, + 131,133,510,134,135,136,462,138,140,463,141,142,144,382,145,146, + 148,149,150,381,151,152,153,154,155,156,157,158,159,161,162,393, + 163,165,395,166,168,169,170,466,171,173,390,175,176,177,577,179, + 394,180,182,470,184,512,186,396,187,189,513,190,192,193,402,194, + 196,197,542,199,200,399,201,203,471,205,401,207,578,208,210,211, + 212,213,214,406,215,217,545,219,220,221,408,222,224,225,226,227, + 228,410,229,579,232,233,234,235,413,236,238,239,476,241,477,242, + 243,517,246,411,248,580,250,412,252,414,260,255,262,263,257,259, + 547,417,261,486,422,265,266,481,268,269,270,482,271,273,274,275, + 276,277,581,278,280,281,282,283,284,427,285,424,287,289,290,487, + 291,292,294,582,295,296,298,300,299,301,489,302,303,304,306,490, + 308,309,527,311,312,439,313,315,316,317,318,319,440,320,322,323, + 583,324,325,443,327,329,330,331,584,333,446,335,563,336,338,447, + 340,448,341,343,449,344,345,346,347,348,349,351,352,353,354,452, + 4,355,356,0,1,2,3,4,5,6,7,8,9,10,11,12, + 13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28, + 29,30,31,32,47,34,35,36,37,38,53,40,41,42,575,58, + 59,60,61,362,63,64,65,52,67,54,69,70,71,72,73,74, + 75,76,363,78,79,80,81,82,364,84,85,86,87,88,89,90, + 77,92,93,94,95,96,83,98,99,100,101,102,96,97,98,99, + 100,101,103,104,105,106,107,108,109,110,366,455,367,368,369,116, + 117,371,372,509,373,374,460,124,111,112,113,114,115,593,131,118, + 510,120,135,122,123,138,125,126,141,142,143,130,145,132,133,539, + 380,381,151,152,153,154,155,156,157,158,159,160,383,148,163,150, + 540,166,385,387,388,468,171,469,390,391,161,162,393,178,165,180, + 167,168,169,170,185,172,173,174,175,176,177,585,179,194,181,182, + 542,184,543,186,201,188,189,204,401,192,193,208,195,196,197,514, + 199,200,215,202,203,218,205,515,207,222,209,210,211,212,213,214, + 229,579,217,618,219,220,221,236,237,224,225,226,227,228,243,230, + 245,232,233,234,235,412,518,238,239,478,241,256,257,244,547,246, + 261,248,479,250,251,252,267,254,255,482,271,258,259,260,421,262, + 263,278,265,266,549,268,269,270,285,272,273,274,275,276,277,425, + 279,280,281,282,283,284,299,286,489,302,289,290,305,292,428,294, + 643,430,431,298,313,300,301,493,434,435,436,306,307,308,309,644, + 311,312,438,314,315,316,317,318,319,320,321,322,323,645,441,442, + 327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342, + 343,344,345,346,347,348,349,350,351,352,353,354,4,355,356,357, + 0,2,3,4,355,5,7,8,9,10,11,358,12,13,14,15, + 16,18,359,19,20,21,22,23,46,360,26,27,28,29,30,53, + 32,55,34,35,36,37,60,361,40,63,64,65,66,67,68,69, + 70,71,72,73,74,75,54,363,78,79,80,81,82,364,84,85, + 86,87,88,89,90,91,92,93,94,95,96,97,98,77,100,101, + 102,96,97,98,99,100,101,103,104,105,106,107,108,109,110,83, + 455,367,368,369,538,117,365,366,509,121,456,457,124,458,371,372, + 576,373,374,131,375,111,112,113,114,115,138,376,118,141,142,143, + 122,145,377,125,126,380,128,151,152,153,154,155,156,157,158,159, + 462,139,140,163,464,540,166,382,386,465,148,171,150,390,391,392, + 387,388,468,389,180,595,470,161,162,393,396,187,395,167,168,169, + 170,397,194,173,174,175,176,177,399,201,400,181,182,401,184,578, + 208,544,188,189,514,403,192,215,402,195,196,197,515,199,222,223, + 202,203,597,205,642,229,579,209,210,211,212,213,236,406,409,217, + 240,219,220,243,408,245,224,225,226,227,412,410,230,253,232,233, + 234,257,413,547,238,239,418,241,264,480,244,267,246,619,248,271, + 250,251,252,421,254,255,278,420,258,260,423,262,263,285,422,265, + 266,613,268,269,425,426,272,273,274,275,276,299,640,279,280,281, + 282,283,490,427,286,527,310,289,290,292,551,552,294,646,647,554, + 298,300,556,301,558,648,649,39,306,307,308,309,650,311,438,439, + 314,315,316,317,318,320,440,321,322,323,651,499,327,443,444,329, + 330,331,445,334,446,335,337,447,338,448,341,342,449,344,345,346, + 347,348,450,350,451,351,352,353,4,452,356,357,1, +}; + +#endif |
