A modern digitális világban a hálózati biztonság fenntartása kiemelt fontosságú. A vállalatok, kormányzati szervek és magánszemélyek egyaránt folyamatosan ki vannak téve a kiberfenyegetéseknek, amelyek adatlopáshoz, szolgáltatásmegtagadáshoz vagy akár teljes rendszerösszeomláshoz vezethetnek. Ebben a komplex és dinamikus környezetben a proaktív védelem mellett elengedhetetlen a behatolások észlelésére és az azokra való reagálásra alkalmas rendszerek alkalmazása. Itt lép színre a Snort, egy nyílt forráskódú hálózati behatolásérzékelő rendszer (NIDS), amely az évek során a kiberbiztonsági szakemberek egyik alapvető eszközévé vált.
A Snort nem csupán egy egyszerű szoftver; ez egy robusztus, rendkívül konfigurálható platform, amely képes valós időben elemezni a hálózati forgalmat, és előre definiált szabályok alapján azonosítani a rosszindulatú tevékenységeket, például a hálózati támadásokat, a port szkenneléseket, a buffer overflow kísérleteket, a CGI támadásokat és sok más gyanús viselkedést. Képességei túlmutatnak a puszta észlelésen; a Snort képes naplózni a forgalmat, riasztásokat generálni, sőt, beágyazott módban (inline mode) hálózati behatolásmegelőző rendszerként (NIPS) is funkcionálhat, blokkolva a káros adatforgalmat, mielőtt az elérné a célpontot.
Mi az a Snort és miért kulcsfontosságú?
A Snortot Martin Roesch hozta létre 1998-ban, és azóta a Sourcefire, majd később a Cisco Systems fejlesztette tovább. A kezdetektől fogva a nyílt forráskódú modellre épült, ami lehetővé tette a globális biztonsági közösség számára, hogy hozzájáruljon a fejlesztéséhez, teszteléséhez és a szabálykészletek bővítéséhez. Ez a közösségi megközelítés biztosítja a Snort folyamatos fejlődését és alkalmazkodását az új fenyegetésekhez.
A Snort alapvető funkciója a hálózati adatcsomagok vizsgálata. Képes a hálózati interfész kártyát promiszkuózus módba (promiscuous mode) állítani, ami azt jelenti, hogy minden, a hálózati szegmensen áthaladó adatcsomagot lát és elemez, függetlenül attól, hogy az a Snortot futtató gépnek szól-e vagy sem. Ez a képesség teszi lehetővé, hogy a hálózat egészére kiterjedő képet kapjunk a forgalomról.
Miért érdemes a Snortot választani?
- Rugalmasság és testreszabhatóság: A Snort rendkívül konfigurálható. A felhasználók egyedi szabályokat írhatnak, amelyek pontosan a saját hálózatukra szabottak, így minimalizálva a hamis pozitív riasztásokat és maximalizálva a valós fenyegetések észlelését.
- Költséghatékonyság: Mivel nyílt forráskódú, a Snort használata ingyenes. Ez különösen vonzóvá teszi kis- és középvállalkozások, valamint szűkös költségvetéssel rendelkező szervezetek számára. Bár a kommerciális szabálykészletek előfizetéshez kötöttek, a közösségi szabálykészletek ingyenesen elérhetők.
- Közösségi támogatás: A Snort mögött egy hatalmas és aktív felhasználói, illetve fejlesztői közösség áll. Ez azt jelenti, hogy rengeteg dokumentáció, fórum és támogatás áll rendelkezésre a problémák megoldásához és a rendszer optimalizálásához.
- Széleskörű integrációs lehetőségek: A Snort könnyen integrálható más biztonsági eszközökkel és SIEM (Security Information and Event Management) rendszerekkel, mint például a Splunk, az ELK Stack (Elasticsearch, Logstash, Kibana) vagy a Graylog, így központosított naplókezelést és eseménykorrelációt tesz lehetővé.
- Folyamatos fejlesztés: A fenyegetések folyamatosan fejlődnek, és a Snort is velük tart. A rendszeres frissítések és az új verziók, mint például a Snort 3, biztosítják, hogy a Snort továbbra is hatékony maradjon a legújabb támadások ellen.
A Snort alapvetően egy mintázatillesztő motor, amely a hálózati adatfolyamot előre definiált szabályok gyűjteményével veti össze. Amikor egy adatcsomag vagy adatfolyam megfelel egy szabálynak, a Snort riasztást generál, naplózza az eseményt, vagy megteszi a konfigurált intézkedéseket. Ez a szabályalapú megközelítés teszi lehetővé a precíz és gyors detekciót.
A Snort működési módjai és architektúrája
A Snort sokoldalúsága abban rejlik, hogy különböző üzemmódokban képes működni, attól függően, hogy milyen feladatra van szükség. Ezek az üzemmódok alapvetően meghatározzák, hogyan dolgozza fel az adatokat és milyen kimenetet generál.
A Snort főbb üzemmódjai:
- Szippantó mód (Sniffer Mode): Ez a legegyszerűbb üzemmód. A Snort ekkor csak kiírja a hálózaton áthaladó csomagok fejlécét a konzolra, mintha egy egyszerű csomagelemző lenne, mint a `tcpdump`. Hasznos a gyors hálózati forgalom vizsgálatához és hibakereséshez.
snort -v
Ez a parancs az IP és TCP/UDP/ICMP fejléceket jeleníti meg.
- Csomagnaplózó mód (Packet Logger Mode): Ebben a módban a Snort az összes hálózati csomagot vagy azok egy részét naplózza a lemezre. A naplók bináris formátumban (`tcpdump` kompatibilis `pcap` fájlokként) vagy olvasható szöveges formátumban is tárolhatók. Ez a funkció kulcsfontosságú a későbbi elemzésekhez és a támadások rekonstrukciójához.
snort -l /var/log/snort
Ez a parancs az összes csomagot a megadott könyvtárba naplózza.
- Hálózati behatolásérzékelő rendszer (NIDS) mód (Network Intrusion Detection System Mode): Ez a Snort leggyakrabban használt üzemmódja. Ebben a módban a Snort a konfigurált szabálykészletek alapján elemzi a hálózati forgalmat, és riasztást generál, ha egy támadásra vagy gyanús tevékenységre utaló mintázatot észlel. A riasztások különböző formátumokban tárolhatók, például szöveges fájlban, adatbázisban vagy syslog üzenetként.
snort -c /etc/snort/snort.conf -A full
Ez a parancs a Snortot NIDS módban indítja el, a megadott konfigurációs fájllal, és részletes riasztásokat generál.
- Inline mód (IPS) (Inline Mode – Intrusion Prevention System): Bár a Snort hagyományosan NIDS-ként működik, a Snort 3 és a Daq (Data Acquisition) modulok révén képes beágyazottan is működni, mint egy hálózati behatolásmegelőző rendszer (NIPS). Ebben a módban a Snort nem csupán észleli a támadásokat, hanem aktívan blokkolja is azokat, mielőtt elérnék a célpontjukat. Ez általában úgy történik, hogy a Snort egy hálózati útvonalba van beillesztve, és szűri a forgalmat. Ez a mód nagyobb teljesítményt és stabilitást igényel.
A Snort alapvető architektúrája és komponensei:
A Snort belső felépítése moduláris, ami nagyban hozzájárul a rugalmasságához és bővíthetőségéhez. A főbb komponensek a következők:
- Csomagdekóder (Packet Decoder): Ez az első réteg, amely felelős a hálózati csomagok befogásáért a hálózati interfészről (libcap vagy DAQ könyvtár segítségével) és a különböző protokollfejlécek (Ethernet, IP, TCP, UDP stb.) elemzéséért. Normalizálja az adatokat a további feldolgozáshoz.
- Előfeldolgozók (Preprocessors): Az előfeldolgozók a dekóder után lépnek működésbe. Feladatuk a csomagok normalizálása, újrarendezése és a komplex protokollok (pl. HTTP, FTP, DNS) elemzése, hogy az érzékelő motor számára érthető formában legyenek. Például a Stream5 előfeldolgozó kezeli a TCP adatfolyamok újrarendezését, míg a HTTP Inspect elemzi a HTTP forgalmat a webes támadások észleléséhez. Ezek a modulok kulcsfontosságúak a kifinomult támadások észlelésében, amelyek több csomagon keresztül zajlanak, vagy protokollanomáliákat használnak ki.
- Érzékelő motor (Detection Engine): Ez a Snort szíve. Itt történik a tényleges szabályillesztés. Az érzékelő motor a preprocesszorok által feldolgozott adatokat összehasonlítja a betöltött Snort szabályokkal. Ha egy csomag vagy adatfolyam megfelel egy szabálynak, a motor riasztást generál és/vagy naplózza az eseményt. Ez a komponens optimalizálva van a nagy sebességű mintázatillesztésre.
- Naplózás és riasztás (Logging and Alerting): Amikor az érzékelő motor egyezést talál, a Snort a konfigurált kimeneti modulok segítségével naplózza az eseményt és/vagy riasztást generál. A riasztások különböző formátumokban és helyekre küldhetők, például konzolra, fájlba, adatbázisba, syslog szerverre vagy Unified2 bináris fájlba, amelyet más eszközök (pl. Barnyard2) dolgoznak fel.
- Kimeneti modulok (Output Modules): Ezek a modulok határozzák meg, hogyan jelennek meg a riasztások és a naplózott adatok. Számos beépített kimeneti modul létezik, és a felhasználók akár egyedi modulokat is fejleszthetnek. Példák: `alert_full`, `alert_fast`, `log_tcpdump`, `unified2`.
A Snort alapvető ereje a moduláris architektúrájában és a rendkívül részletes, felhasználó által definiálható szabálykészleteiben rejlik, amelyek lehetővé teszik a dinamikus és hatékony behatolásérzékelést a legkülönfélébb hálózati környezetekben.
Ez a felépítés biztosítja, hogy a Snort képes legyen lépést tartani a változó fenyegetési környezettel, miközben megőrzi teljesítményét és megbízhatóságát.
Snort szabályok: Az érzékelés gerincét képező mechanizmus
A Snort képessége, hogy felismerje a rosszindulatú tevékenységeket, teljes egészében a szabálykészleteire épül. Egy Snort szabály lényegében egy utasítás, amely leírja, hogy milyen típusú hálózati forgalmat kell keresni, és mi történjen, ha az adott mintázatot megtalálják. A szabályok rendkívül részletesek lehetnek, lehetővé téve a specifikus támadások precíz azonosítását.
A Snort szabályok felépítése:
Minden Snort szabály két fő részből áll: a szabály fejlécéből (Rule Header) és a szabály opcióiból (Rule Options).
1. Szabály fejléc (Rule Header):
Ez a rész határozza meg a szabály alapvető paramétereit, mint például a riasztási műveletet, a protokollt, a forrás és cél IP-címeket, valamint a portokat.
A fejléc felépítése a következő:
action protocol source_ip source_port -> destination_ip destination_port
- `action` (Művelet): Meghatározza, mi történjen, ha a szabály illeszkedik.
- `alert`: Riasztást generál és naplózza a csomagot.
- `log`: Csak naplózza a csomagot, riasztást nem generál.
- `pass`: Figyelmen kívül hagyja a csomagot (nem generál riasztást, nem naplózza).
- `drop` (csak IPS módban): Blokkolja a csomagot és riasztást generál.
- `reject` (csak IPS módban): Blokkolja a csomagot, riasztást generál, és TCP RST (reset) vagy ICMP unreachable üzenetet küld.
- `sdrop` (csak IPS módban): Blokkolja a csomagot, riasztást nem generál.
- `protocol` (Protokoll): A vizsgálandó protokoll. Lehet `ip`, `icmp`, `tcp`, `udp`.
- `source_ip` (Forrás IP-cím): A forrás IP-címe. Lehet egy adott IP, egy hálózat (CIDR formátumban, pl. `192.168.1.0/24`), vagy `any` (bármely). A `!` (negáció) operátorral kizárható egy IP.
- `source_port` (Forrás port): A forrás portja. Lehet egy adott port, egy porttartomány (`1024:` a 1024-től felfelé, `:1023` a 1023-ig, `1024:2048` egy tartomány), vagy `any`.
- `->` (Irány): Meghatározza az adatfolyam irányát. A `<->` kétirányú forgalmat jelöl.
- `destination_ip` (Cél IP-cím): A cél IP-címe. Ugyanazok a lehetőségek, mint a forrás IP-nél.
- `destination_port` (Cél port): A cél portja. Ugyanazok a lehetőségek, mint a forrás portnál.
Példa szabály fejléc:
alert tcp any any -> 192.168.1.100 80
Ez a fejléc riasztást generál minden TCP forgalomra, amely bármely forrás IP-címről és portról a 192.168.1.100-as IP-cím 80-as portjára irányul.
2. Szabály opciók (Rule Options):
Ezek az opciók pontosítják a szabályt, és zárójelben, pontosvesszővel elválasztva követik a fejlécet. Minden opció egy kulcsszóból és egy értékből áll, kettősponttal elválasztva. A szabály opciók teszik a Snortot igazán erőssé és rugalmassá. Néhány gyakori és fontos opció:
- `msg` (üzenet): Kötelező opció, amely egy rövid leírást ad a riasztásról. Nagyon fontos a riasztások későbbi értelmezéséhez.
msg:"WEB-ATTACKS Possible SQL Injection attempt";
- `sid` (Snort ID): Egyedi azonosító a szabály számára. Minden szabálynak egyedi SID-je kell, hogy legyen. A 100-as alatti SID-k a Snort belső szabályai számára vannak fenntartva. Az egyedi szabályokhoz általában 100000 fölötti SID-ket használnak.
sid:2000001;
- `rev` (revízió): A szabály verziószáma. Növelni kell minden alkalommal, amikor a szabályt módosítják.
rev:1;
- `classtype` (osztálytípus): A riasztás kategóriáját írja le (pl. `web-application-attack`, `attempted-admin`, `trojan-activity`). Segít a riasztások priorizálásában és rendezésében.
classtype:web-application-attack;
- `priority` (prioritás): A riasztás súlyossági szintje (1 a legmagasabb).
priority:1;
- `content` (tartalom): A leggyakrabban használt opció. Meghatároz egy bájtsorozatot, amelyet a csomag adatfolyamában kell keresni. Lehet szöveg vagy hexadecimális érték. A `nocase` módosítóval a kis- és nagybetűk figyelmen kívül hagyhatók.
content:"/etc/passwd"; nocase;
A `content` opciók láncolhatók, és `offset`, `depth`, `distance`, `within` módosítókkal pontosítható a keresési pozíció.
content:"GET"; http_method; content:"/login.php"; http_uri;
- `pcre` (Perl Compatible Regular Expressions): Lehetővé teszi komplex reguláris kifejezések használatát a tartalom illesztéséhez. Rendkívül hatékony, de erőforrásigényesebb, mint a `content` opció.
pcre:"/(union|select|insert|delete|update)\s+from/ims";
- `flow` (adatfolyam): Meghatározza az adatfolyam állapotát és irányát (pl. `to_client`, `to_server`, `established`, `stateless`).
flow:to_server,established;
- `byte_test`, `byte_jump`: Bináris adatok vizsgálatára és a csomagban való ugrálásra szolgálnak, például a protokollfejlécek vagy egyedi bináris protokollok elemzésére.
byte_test:1,>,0x10,0,relative;
- `isdataat`: Ellenőrzi, hogy van-e adat egy adott offsetnél.
isdataat:!1,relative;
- `dsize`: Ellenőrzi a csomag adatméretét.
dsize: < 100;
- `threshold` (küszöb): Korlátozza a riasztások számát egy adott időintervallumban, csökkentve a hamis pozitív riasztások okozta "riasztási fáradtságot".
threshold: type limit, track by_src, count 1, seconds 60;
Ez a szabály csak egyszer riaszt egy adott forrás IP-címről 60 másodpercen belül.
- `detection_filter`: Hasonló a `threshold`-hoz, de a riasztások generálása előtt szűri az eseményeket.
- `reference`: Hivatkozásokat ad a szabályhoz, például CVE ID-k, Bugtraq ID-k, vagy URL-ek, amelyek további információkat szolgáltatnak a fenyegetésről.
reference:cve,2021-12345; url,http://example.com/exploit;
Teljes példa Snort szabály:
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"WEB-ATTACKS Possible SQL Injection attempt - single quote"; flow:to_server,established; content:"'"; http_uri; classtype:web-application-attack; sid:2000001; rev:1;)
Ez a szabály riasztást generál, ha egy külső hálózatról (EXTERNAL_NET) érkező TCP forgalomban, amely a belső hálózat (HOME_NET) 80-as portjára irányul, és egy már létrejött szerver felé irányuló adatfolyamról van szó, a HTTP URI-ban egy aposztróf karaktert (`'`) talál. Ez gyakori jele egy SQL injekciós kísérletnek.
Szabálykészletek és kezelésük:
A Snort felhasználók két fő típusú szabálykészletet használnak:
- Közösségi szabályok (Community Rules): Ezeket a Snort közösség tartja fenn és frissíti. Ingyenesen elérhetők, de általában 30 napos késéssel jelennek meg a fizetős szabálykészletekhez képest.
- Kereskedelmi szabályok (Subscription Rules): Ezeket a Cisco Talos (korábban Sourcefire VRT) csapata fejleszti és tartja karban. Előfizetés ellenében azonnal elérhetők, és általában naprakészebbek, valamint szélesebb körű védelmet nyújtanak.
A szabályok manuális frissítése időigényes és hibalehetőségeket rejt. Ezért a legtöbb Snort telepítés valamilyen automatizált eszközt használ a szabálykészletek kezelésére. A PulledPork egy népszerű Perl szkript, amelyet a Snort szabályok letöltésére, érvényesítésére és frissítésére használnak. Segít a szabálykészletek karbantartásában, a felesleges vagy ütköző szabályok letiltásában, és a Snort konfigurációs fájl frissítésében.
A hatékony Snort üzemeltetés alapja a szabálykészletek folyamatos finomhangolása. Ez magában foglalja a hamis pozitív riasztások (false positives) azonosítását és elnyomását, valamint a hamis negatív riasztások (false negatives) felkutatását és orvoslását új vagy módosított szabályok hozzáadásával. A szabályok írásához és megértéséhez mélyreható ismeretek szükségesek a hálózati protokollokról, a támadási technikákról és a reguláris kifejezésekről.
Snort telepítés és alapkonfiguráció

A Snort telepítése és konfigurálása kulcsfontosságú lépés a hatékony behatolásérzékelő rendszer kiépítésében. Bár a folyamat platformfüggő lehet (Linux, Windows, macOS), az alapelvek hasonlóak.
Előfeltételek:
- Operációs rendszer: Linux disztribúció (Ubuntu, Debian, CentOS, Fedora) ajánlott a legjobb teljesítmény és kompatibilitás érdekében.
- libcap-dev: A hálózati csomagok befogásához szükséges könyvtár.
- DAQ (Data Acquisition) könyvtár: A Snort adatgyűjtő modulja, amely lehetővé teszi a csomagok befogását a különböző hálózati interfészekről. A Snort 3 esetében ez integráltabb.
- Build-essential / Fejlesztői eszközök: A fordításhoz szükséges eszközök, mint a GCC, make.
- Egyéb függőségek: Például `libpcre`, `lzma`, `zlib` a reguláris kifejezésekhez és a tömörítéshez.
Telepítés (Linux példa, forráskódból):
A forráskódból történő telepítés nagyobb rugalmasságot biztosít, de a csomagkezelővel (pl. `apt`, `yum`) történő telepítés egyszerűbb lehet, bár régebbi verziót eredményezhet.
# Frissítjük a csomaglistákat és telepítjük a függőségeket
sudo apt update
sudo apt install -y build-essential libpcap-dev libpcre3-dev liblzma-dev zlib1g-dev libdnet-dev libdaq-dev
# Letöltjük a Snort és DAQ forráskódját (aktuális verziók ellenőrzése szükséges)
# DAQ (ha szükséges a Snort verziójához)
wget https://www.snort.org/downloads/snort/daq-X.X.X.tar.gz
tar -xvzf daq-X.X.X.tar.gz
cd daq-X.X.X
./configure
make
sudo make install
sudo ldconfig # Frissítjük a dinamikus linkelő gyorsítótárát
# Snort
wget https://www.snort.org/downloads/snort/snort-Y.Y.Y.tar.gz
tar -xvzf snort-Y.Y.Y.tar.gz
cd snort-Y.Y.Y
./configure --enable-sourcefire
make
sudo make install
sudo ldconfig
# Létrehozzuk a szükséges könyvtárakat és jogosultságokat
sudo mkdir /etc/snort
sudo mkdir /var/log/snort
sudo chmod -R 777 /var/log/snort # Ideiglenesen, később szigorítani kell
sudo groupadd snort
sudo useradd snort -r -s /sbin/nologin -c "Snort User" -g snort
sudo chown -R snort:snort /var/log/snort
Az `snort.conf` konfigurációs fájl:
Ez a Snort agya. Itt definiáljuk a változókat, a preprocesszorokat, a kimeneti modulokat és a szabályok helyét. A fájl általában a `/etc/snort/snort.conf` útvonalon található.
Fontos konfigurációs részek:
- Változók definiálása: A Snort szabályokban használható változókat definiálunk itt. Ez nagyban segíti a szabályok olvashatóságát és karbantarthatóságát.
# Otthoni hálózat var HOME_NET 192.168.1.0/24 # Külső hálózat var EXTERNAL_NET any # DNS szerverek var DNS_SERVERS $HOME_NET # HTTP portok var HTTP_PORTS 80 # SQL portok var SQL_PORTS 1433,1434,3306,1521
Tipp: A `HOME_NET` pontos definiálása kulcsfontosságú a hamis pozitív riasztások elkerüléséhez. Az `EXTERNAL_NET` általában `any` értékű.
- DAQ és hálózati interfész: Meghatározza, melyik interfészen figyeljen a Snort.
config daq: afpacket config daq_mode: inline # Vagy "passive" NIDS módhoz config daq_dir: /usr/local/lib/snort_daq
A `config interface: eth0` (Snort 2) vagy a parancssori `--interface eth0` (Snort 3) adja meg a figyelendő interfészt.
- Előfeldolgozók (Preprocessors): Engedélyezzük és konfiguráljuk a különböző előfeldolgozókat. Ezek rendkívül fontosak a komplex támadások észleléséhez.
# Stream5 TCP újrarendezés
preprocessor stream5_global: track_tcp yes, track_udp yes, track_icmp yes, timeout 300
preprocessor stream5_tcp: policy first, ports client 80, 110, 143, 21, 23, 25, 53, 139, 443, 445, 1433, 3306, 3389, 5900, 8080, 8443, 8888, 9000, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008, 9009, 9010, 9011, 9012, 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 9023, 9024, 9025, 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9035, 9036, 9037, 9038, 9039, 9040, 9041, 9042, 9043, 9044, 9045, 9046, 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9054, 9055, 9056, 9057, 9058, 9059, 9060, 9061, 9062, 9063, 9064, 9065, 9066, 9067, 9068, 9069, 9070, 9071, 9072, 9073, 9074, 9075, 9076, 9077, 9078, 9079, 9080, 9081, 9082, 9083, 9084, 9085, 9086, 9087, 9088, 9089, 9090, 9091, 9092, 9093, 9094, 9095, 9096, 9097, 9098, 9099, 9100, 9101, 9102, 9103, 9104, 9105, 9106, 9107, 9108, 9109, 9110, 9111, 9112, 9113, 9114, 9115, 9116, 9117, 9118, 9119, 9120, 9121, 9122, 9123, 9124, 9125, 9126, 9127, 9128, 9129, 9130, 9131, 9132, 9133, 9134, 9135, 9136, 9137, 9138, 9139, 9140, 9141, 9142, 9143, 9144, 9145, 9146, 9147, 9148, 9149, 9150, 9151, 9152, 9153, 9154, 9155, 9156, 9157, 9158, 9159, 9160, 9161, 9162, 9163, 9164, 9165, 9166, 9167, 9168, 9169, 9170, 9171, 9172, 9173, 9174, 9175, 9176, 9177, 9178, 9179, 9180, 9181, 9182, 9183, 9184, 9185, 9186, 9187, 9188, 9189, 9190, 9191, 9192, 9193, 9194, 9195, 9196, 9197, 9198, 9199, 9200, 9201, 9202, 9203, 9204, 9205, 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213, 9214, 9215, 9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223, 9224, 9225, 9226, 9227, 9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, 9236, 9237, 9238, 9239, 9240, 9241, 9242, 9243, 9244, 9245, 9246, 9247, 9248, 9249, 9250, 9251, 9252, 9253, 9254, 9255, 9256, 9257, 9258, 9259, 9260, 9261, 9262, 9263, 9264, 9265, 9266, 9267, 9268, 9269, 9270, 9271, 9272, 9273, 9274, 9275, 9276, 9277, 9278, 9279, 9280, 9281, 9282, 9283, 9284, 9285, 9286, 9287, 9288, 9289, 9290, 9291, 9292, 9293, 9294, 9295, 9296, 9297, 9298, 9299, 9300, 9301, 9302, 9303, 9304, 9305, 9306, 9307, 9308, 9309, 9310, 9311, 9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9322, 9323, 9324, 9325, 9326, 9327, 9328, 9329, 9330, 9331, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344, 9345, 9346, 9347, 9348, 9349, 9350, 9351, 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359, 9360, 9361, 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9369, 9370, 9371, 9372, 9373, 9374, 9375, 9376, 9377, 9378, 9379, 9380, 9381, 9382, 9383, 9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391, 9392, 9393, 9394, 9395, 9396, 9397, 9398, 9399, 9400, 9401, 9402, 9403, 9404, 9405, 9406, 9407, 9408, 9409, 9410, 9411, 9412, 9413, 9414, 9415, 9416, 9417, 9418, 9419, 9420, 9421, 9422, 9423, 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432, 9433, 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443, 9444, 9445, 9446, 9447, 9448, 9449, 9450, 9451, 9452, 9453, 9454, 9455, 9456, 9457, 9458, 9459, 9460, 9461, 9462, 9463, 9464, 9465, 9466, 9467, 9468, 9469, 9470, 9471, 9472, 9473, 9474, 9475, 9476, 9477, 9478, 9479, 9480, 9481, 9482, 9483, 9484, 9485, 9486, 9487, 9488, 9489, 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502, 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511, 9512, 9513, 9514, 9515, 9516, 9517, 9518, 9519, 9520, 9521, 9522, 9523, 9524, 9525, 9526, 9527, 9528, 9529, 9530, 9531, 9532, 9533, 9534, 9535, 9536, 9537, 9538, 9539, 9540, 9541, 9542, 9543, 9544, 9545, 9546, 9547, 9548, 9549, 9550, 9551, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9581, 9582, 9583, 9584, 9585, 9586, 9587, 9588, 9589, 9590, 9591, 9592, 9593, 9594, 9595, 9596, 9597, 9598, 9599, 9600, 9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608, 9609, 9610, 9611, 9612, 9613, 9614, 9615, 9616, 9617, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9625, 9626, 9627, 9628, 9629, 9630, 9631, 9632, 9633, 9634, 9635, 9636, 9637, 9638, 9639, 9640, 9641, 9642, 9643, 9644, 9645, 9646, 9647, 9648, 9649, 9650, 9651, 9652, 9653, 9654, 9655, 9656, 9657, 9658, 9659, 9660, 9661, 9662, 9663, 9664, 9665, 9666, 9667, 9668, 9669, 9670, 9671, 9672, 9673, 9674, 9675, 9676, 9677, 9678, 9679, 9680, 9681, 9682, 9683, 9684, 9685, 9686, 9687, 9688, 9689, 9690, 9691, 9692, 9693, 9694, 9695, 9696, 9697, 9698, 9699, 9700, 9701, 9702, 9703, 9704, 9705, 9706, 9707, 9708, 9709, 9710, 9711, 9712, 9713, 9714, 9715, 9716, 9717, 9718, 9719, 9720, 9721, 9722, 9723, 9724, 9725, 9726, 9727, 9728, 9729, 9730, 9731, 9732, 9733, 9734, 9735, 9736, 9737, 9738, 9739, 9740, 9741, 9742, 9743, 9744, 9745, 9746, 9747, 9748, 9749, 9750, 9751, 9752, 9753, 9754, 9755, 9756, 9757, 9758, 9759, 9760, 9761, 9762, 9763, 9764, 9765, 9766, 9767, 9768, 9769, 9770, 9771, 9772, 9773, 9774, 9775, 9776, 9777, 9778, 9779, 9780, 9781, 9782, 9783, 9784, 9785, 9786, 9787, 9788, 9789, 9790, 9791, 9792, 9793, 9794, 9795, 9796, 9797, 9798, 9799, 9800, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814, 9815, 9816, 9817, 9818, 9819, 9820, 9821, 9822, 9823, 9824, 9825, 9826, 9827, 9828, 9829, 9830, 9831, 9832, 9833, 9834, 9835, 9836, 9837, 9838, 9839, 9840, 9841, 9842, 9843, 9844, 9845, 9846, 9847, 9848, 9849, 9850, 9851, 9852, 9853, 9854, 9855, 9856, 9857, 9858, 9859, 9860, 9861, 9862, 9863, 9864, 9865, 9866, 9867, 9868, 9869, 9870, 9871, 9872, 9873, 9874, 9875, 9876, 9877, 9878, 9879, 9880, 9881, 9882, 9883, 9884, 9885, 9886, 9887, 9888, 9889, 9890, 9891, 9892, 9893, 9894, 9895, 9896, 9897, 9898, 9899, 9900, 9901, 9902, 9903, 9904, 9905, 9906, 9907, 9908, 9909, 9910, 9911, 9912, 9913, 9914, 9915, 9916, 9917, 9918, 9919, 9920, 9921, 9922, 9923, 9924, 9925, 9926, 9927, 9928, 9929, 9930, 9931, 9932, 9933, 9934, 9935, 9936, 9937, 9938, 9939, 9940, 9941, 9942, 9943, 9944, 9945, 9946, 9947, 9948, 9949, 9950, 9951, 9952, 9953, 9954, 9955, 9956, 9957, 9958, 9959, 9960, 9961, 9962, 9963, 9964, 9965, 9966, 9967, 9968, 9969, 9970, 9971, 9972, 9973, 9974, 9975, 9976, 9977, 9978, 9979, 9980, 9981, 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990, 9991, 9992, 9993, 9994, 9995, 9996, 9997, 9998, 9999, 10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, 10016, 10017, 10018, 10019, 10020, 10021, 10022, 10023, 10024, 10025, 10026, 10027, 10028, 10029, 10030, 10031, 10032, 10033, 10034, 10035, 10036, 10037, 10038, 10039, 10040, 10041, 10042, 10043, 10044, 10045, 10046, 10047, 10048, 10049, 10050, 10051, 10052, 10053, 10054, 10055, 10056, 10057, 10058, 10059, 10060, 10061, 10062, 10063, 10064, 10065, 10066, 10067, 10068, 10069, 10070, 10071, 10072, 10073, 10074, 10075, 10076, 10077, 10078, 10079, 10080, 10081, 10082, 10083, 10084, 10085, 10086, 10087, 10088, 10089, 10090, 10091, 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10099, 10100, 10101, 10102, 10103, 10104, 10105, 10106, 10107, 10108, 10109, 10110, 10111, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119, 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129, 10130, 10131, 10132, 10133, 10134, 10135, 10136, 10137, 10138, 10139, 10140, 10141, 10142, 10143, 10144, 10145, 10146, 10147, 10148, 10149, 10150, 10151, 10152, 10153, 10154, 10155, 10156, 10157, 10158, 10159, 10160, 10161, 10162, 10163, 10164, 10165, 10166, 10167, 10168, 10169, 10170, 10171, 10172, 10173, 10174, 10175, 10176, 10177, 10178, 10179, 10180, 10181, 10182, 10183, 10184, 10185, 10186, 10187, 10188, 10189, 10190, 10191, 10192, 10193, 10194, 10195, 10196, 10197, 10198, 10199, 10200, 10201, 10202, 10203, 10204, 10205, 10206, 10207, 10208, 10209, 10210, 10211, 10212, 10213, 10214, 10215, 10216, 10217, 10218, 10219, 10220, 10221, 10222, 10223, 10224, 10225, 10226, 10227, 10228, 10229, 10230, 10231, 10232, 10233, 10234, 10235, 10236, 10237, 10238, 10239, 10240, 10241, 10242, 10243, 10244, 10245, 10246, 10247, 10248, 10249, 10250, 10251, 10252, 10253, 10254, 10255, 10256, 10257, 10258, 10259, 10260, 10261, 10262, 10263, 10264, 10265, 10266, 10267, 10268, 10269, 10270, 10271, 10272, 10273, 10274, 10275, 10276, 10277, 10278, 10279, 10280, 10281, 10282, 10283, 10284, 10285, 10286, 10287, 10288, 10289, 10290, 10291, 10292, 10293, 10294, 10295, 10296, 10297, 10298, 10299, 10300, 10301, 10302, 10303, 10304, 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, 10313, 10314, 10315, 10316, 10317, 10318, 10319, 10320, 10321, 10322, 10323, 10324, 10325, 10326, 10327, 10328, 10329, 10330, 10331, 10332, 10333, 10334, 10335, 10336, 10337, 10338, 10339, 10340, 10341, 10342, 10343, 10344, 10345, 10346, 10347, 10348, 10349, 10350, 10351, 10352, 10353, 10354, 10355, 10356, 10357, 10358, 10359, 10360, 10361, 10362, 10363, 10364, 10365, 10366, 10367, 10368, 10369, 10370, 10371, 10372, 10373, 10374, 10375, 10376, 10377, 10378, 10379, 10380, 10381, 10382, 10383, 10384, 10385, 10386, 10387, 10388, 10389, 10390, 10391, 10392, 10393, 10394, 10395, 10396, 10397, 10398, 10399, 10400, 10401, 10402, 10403, 10404, 10405, 10406, 10407, 10408, 10409, 10410, 10411, 10412, 10413, 10414, 10415, 10416, 10417, 10418, 10419, 10420, 10421, 10422, 10423, 10424, 10425, 10426, 10427, 10428, 10429, 10430, 10431, 10432, 10433, 10434, 10435, 10436, 10437, 10438, 10439, 10440, 10441, 10442, 10443, 10444, 10445, 10446, 10447, 10448, 10449, 10450, 10451, 10452, 10453, 10454, 10455, 10456, 10457, 10458, 10459, 10460, 10461, 10462, 10463, 10464, 10465, 10466, 10467, 10468, 10469, 10470, 10471, 10472, 10473, 10474, 10475, 10476, 10477, 10478, 10479, 10480, 10481, 10482, 10483, 10484, 10485, 10486, 10487, 10488, 10489, 10490, 10491, 10492, 10493, 10494, 10495, 10496, 10497, 10498, 10499, 10500, 10501, 10502, 10503, 10504, 10505, 10506, 10507, 10508, 10509, 10510, 10511, 10512, 10513, 10514, 10515, 10516, 10517, 10518, 10519, 10520, 10521, 10522, 10523, 10524, 10525, 10526, 10527, 10528, 10529, 10530, 10531, 10532, 10533, 10534, 10535, 10536, 10537, 10538, 10539, 10540, 10541, 10542, 10543, 10544, 10545, 10546, 10547, 10548, 10549, 10550, 10551, 10552, 10553, 10554, 10555, 10556, 10557, 10558, 10559, 10560, 10561, 10562, 10563, 10564, 10565, 10566, 10567, 10568, 10569, 10570, 10571, 10572, 10573, 10574, 10575, 10576, 10577, 10578, 10579, 10580, 10581, 10582, 10583, 10584, 10585, 10586, 10587, 10588, 10589, 10590, 10591, 10592, 10593, 10594, 10595, 10596, 10597, 10598, 10599, 10600, 10601, 10602, 10603, 10604, 10605, 10606, 10607, 10608, 10609, 10610, 10611, 10612, 10613, 10614, 10615, 10616, 10617, 10618, 10619, 10620, 10621, 10622, 10623, 10624, 10625, 10626, 10627, 10628, 10629, 10630, 10631, 10632, 10633, 10634, 10635, 10636, 10637, 10638, 10639, 10640, 10641, 10642, 10643, 10644, 10645, 10646, 10647, 10648, 10649, 10650, 10651, 10652, 10653, 10654, 10655, 10656, 10657, 10658, 10659, 10660, 10661, 10662, 10663, 10664, 10665, 10666, 10667, 10668, 10669, 10670, 10671, 10672, 10673, 10674, 10675, 10676, 10677, 10678, 10679, 10680, 10681, 10682, 10683, 10684, 10685, 10686, 10687, 10688, 10689, 10690, 10691, 10692, 10693, 10694, 10695, 10696, 10697, 10698, 10699, 10700, 10701, 10702, 10703, 10704, 10705, 10706, 10707, 10708, 10709, 10710, 10711, 10712, 10713, 10714, 10715, 10716, 10717, 10718, 10719, 10720, 10721, 10722, 10723, 10724, 10725, 10726, 10727, 10728, 10729, 10730, 10731, 10732, 10733, 10734, 10735, 10736, 10737, 10738, 10739, 10740, 10741, 10742, 10743, 10744, 10745, 10746, 10747, 10748, 10749, 10750, 10751, 10752, 10753, 10754, 10755, 10756, 10757, 10758, 10759, 10760, 10761, 10762, 10763, 10764, 10765, 10766, 10767, 10768, 10769, 10770, 10771, 10772, 10773, 10774, 10775, 10776, 10777, 10778, 10779, 10780, 10781, 10782, 10783, 10784, 10785, 10786, 10787, 10788, 10789, 10790, 10791, 10792, 10793, 10794, 10795, 10796, 10797, 10798, 10799, 10800, 10801, 10802, 10803, 10804, 10805, 10806, 10807, 10808, 10809, 10810, 10811, 10812, 10813, 10814, 10815, 10816, 10817, 10818, 10819, 10820, 10821, 10822, 10823, 10824, 10825, 10826, 10827, 10828, 10829, 10830, 10831, 10832, 10833, 10834, 10835, 10836, 10837, 10838, 10839, 10840, 10841, 10842, 10843, 10844, 10845, 10846, 10847, 10848, 10849, 10850, 10851, 10852, 10853, 10854, 10855, 10856, 10857, 10858, 10859, 10860, 10861, 10862, 10863, 10864, 10865, 10866, 10867, 10868, 10869, 10870, 10871, 10872, 10873, 10874, 10875, 10876, 10877, 10878, 10879, 10880, 10881, 10882, 10883, 10884, 10885, 10886, 10887, 10888, 10889, 10890, 10891, 10892, 10893, 10894, 10895, 10896, 10897, 10898, 10899, 10900, 10901, 10902, 10903, 10904, 10905, 10906, 10907, 10908, 10909, 10910, 10911, 10912, 10913, 10914, 10915, 10916, 10917, 10918, 10919, 10920, 10921, 10922, 10923, 10924, 10925, 10926, 10927, 10928, 10929, 10930, 10931, 10932, 10933, 10934, 10935, 10936, 10937, 10938, 10939, 10940, 10941, 10942, 10943, 10944, 10945, 10946, 10947, 10948, 10949, 10950, 10951, 10952, 10953, 10954, 10955, 10956, 10957, 10958, 10959, 10960, 10961, 10962, 10963, 10964, 10965, 10966, 10967, 10968, 10969, 10970, 10971, 10972, 10973, 10974, 10975, 10976, 10977, 10978, 10979, 10980, 10981, 10982, 10983, 10984, 10985, 10986, 10987, 10988, 10989, 10990, 10991, 10992, 10993, 10994, 10995, 10996, 10997, 10998, 10999, 11000, 11001, 11002, 11003, 11004, 11005, 11006, 11007, 11008, 11009, 11010, 11011, 11012, 11013, 11014, 11015, 11016, 11017, 11018, 11019, 11020, 11021, 11022, 11023, 11024, 11025, 11026, 11027, 11028, 11029, 11030, 11031, 11032, 11033, 11034, 11035, 11036, 11037, 11038, 11039, 11040, 11041, 11042, 11043, 11044, 11045, 11046, 11047, 11048, 11049, 11050, 11051, 11052, 11053, 11054, 11055, 11056, 11057, 11058, 11059, 11060, 11061, 11062, 11063, 11064, 11065, 11066, 11067, 11068, 11069, 11070, 11071, 11072, 11073, 11074, 11075, 11076, 11077, 11078, 11079, 11080, 11081, 11082, 11083, 11084, 11085, 11086, 11087, 11088, 11089, 11090, 11091, 11092, 11093, 11094, 11095, 11096, 11097, 11098, 11099, 11100, 11101, 11102, 11103, 11104, 11105, 11106, 11107, 11108, 11109, 11110, 11111, 11112, 11113, 11114, 11115, 11116, 11117, 11118, 11119, 11120, 11121, 11122, 11123, 11124, 11125, 11126, 11127, 11128, 11129, 11130, 11131, 11132, 11133, 11134, 11135, 11136, 11137, 11138, 11139, 11140, 11141, 11142, 11143, 11144, 11145, 11146, 11147, 11148, 11149, 11150, 11151, 11152, 11153, 11154, 11155, 11156, 11157, 11158, 11159, 11160, 11161, 11162, 11163, 11164, 11165, 11166, 11167, 11168, 11169, 11170, 11171, 11172, 11173, 11174, 11175, 11176, 11177, 11178, 11179, 11180, 11181, 11182, 11183, 11184, 11185, 11186, 11187, 11188, 11189, 11190, 11191, 11192, 11193, 11194, 11195, 11196, 11197, 11198, 11199, 11200, 11201, 11202, 11203, 11204, 11205, 11206, 11207, 11208, 11209, 11210, 11211, 11212, 11213, 11214, 11215, 11216, 11217, 11218, 11219, 11220, 11221, 11222, 11223, 11224, 11225, 11226, 11227, 11228, 11229, 11230, 11231, 11232, 11233, 11234, 11235, 11236, 11237, 11238, 11239, 11240, 11241, 11242, 11243, 11244, 11245, 11246, 11247, 11248, 11249, 11250, 11251, 11252, 11253, 11254, 11255, 11256, 11257, 11258, 11259, 11260, 11261, 11262, 11263, 11264, 11265, 11266, 11267, 11268, 11269, 11270, 11271, 11272, 11273, 11274, 11275, 11276, 11277, 11278, 11279, 11280, 11281, 11282, 11283, 11284, 11285, 11286, 11287, 11288, 11289, 11290, 11291, 11292, 11293, 11294, 11295, 11296, 11297, 11298, 11299, 11300, 11301, 11302, 11303, 11304, 11305, 11306, 11307, 11308, 11309, 11310, 11311, 11312, 11313, 11314, 11315, 11316, 11317, 11318, 11319, 11320, 11321, 11322, 11323, 11324, 11325, 11326, 11327, 11328, 11329, 11330, 11331, 11332, 11333, 11334, 11335, 11336, 11337, 11338, 11339, 11340, 11341, 11342, 11343, 11344, 11345, 11346, 11347, 11348, 11349, 11350, 11351, 11352, 11353, 11354, 11355, 11356, 11357, 11358, 11359, 11360, 11361, 11362, 11363, 11364, 11365, 11366, 11367, 11368, 11369, 11370, 11371, 11372, 11373, 11374, 11375, 11376, 11377, 11378, 11379, 11380, 11381, 11382, 11383, 11384, 11385, 11386, 11387, 11388, 11389, 11390, 11391, 11392, 11393, 11394, 11395, 11396, 11397, 11398, 11399, 11400, 11401, 11402, 11403, 11404, 11405, 11406, 11407, 11408, 11409, 11410, 11411, 11412, 11413, 11414, 11415, 11416, 11417, 11418, 11419, 11420, 11421, 11422, 11423, 11424, 11425, 11426, 11427, 11428, 11429, 11430, 11431, 11432, 11433, 11434, 11435, 11436, 11437, 11438, 11439, 11440, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11453, 11454, 11455, 11456, 11457, 11458, 11459, 11460, 11461, 11462, 11463, 11464, 11465, 11466, 11467, 11468, 11469, 11470, 11471, 11472, 11473, 11474, 11475, 11476, 11477, 11478, 11479, 11480, 11481, 11482, 11483, 11484, 11485, 11486, 11487, 11488, 11489, 11490, 11491, 11492, 11493, 11494, 11495, 11496, 11497, 11498, 11499, 11500, 11501, 11502, 11503, 11504, 11505, 11506, 11507, 11508, 11509, 11510, 11511, 11512, 11513, 11514, 11515, 11516, 11517, 11518, 11519, 11520, 11521, 11522, 11523, 11524, 11525, 11526, 11527, 11528, 11529, 11530, 11531, 11532, 11533, 11534, 11535, 11536, 11537, 11538, 11539, 11540, 11541, 11542, 11543, 11544, 11545, 11546, 11547, 11548, 11549, 11550, 11551, 11552, 11553, 11554, 11555, 11556, 11557, 11558, 11559, 11560, 11561, 11562, 11563, 11564, 11565, 11566, 11567, 11568, 11569, 11570, 11571, 11572, 11573, 11574, 11575, 11576, 11577, 11578, 11579, 11580, 11581, 11582, 11583, 11584, 11585, 11586, 11587, 11588, 11589, 11590, 11591, 11592, 11593, 11594, 11595, 11596, 11597, 11598, 11599, 11600, 11601, 11602, 11603, 11604, 11605, 11606, 11607, 11608, 11609, 11610, 11611, 11612, 11613, 11614, 11615, 11616, 11617, 11618, 11619, 11620, 11621, 11622, 11623, 11624, 11625, 11626, 11627, 11628, 11629, 11630, 11631, 11632, 11633, 11634, 11635, 11636, 11637, 11638, 11639, 11640, 11641, 11642, 11643, 11644, 11645, 11646, 11647, 11648, 11649, 11650, 11651, 11652, 11653, 11654, 11655, 11656, 11657, 11658, 11659, 11660, 11661, 11662, 11663, 11664, 11665, 11666, 11667, 11668, 11669, 11670, 11671, 11672, 11673, 11674, 11675, 11676, 11677, 11678, 11679, 11680, 11681, 11682, 11683, 11684, 11685, 11686, 11687, 11688, 11689, 11690, 11691, 11692, 11693, 11694, 11695, 11696, 11697, 11698, 11699, 11700, 11701, 11702, 11703, 11704, 11705, 11706, 11707, 11708, 11709, 11710, 11711, 11712, 11713, 11714, 11715, 11716, 11717, 11718, 11719, 11720, 11721, 11722, 11723, 11724, 11725, 11726, 11727, 11728, 11729, 11730, 11731, 11732, 11733, 11734, 11735, 11736, 11737, 11738, 11739, 11740, 11741, 11742, 11743, 11744, 11745, 11746, 11747, 11748, 11749, 11750, 11751, 11752, 11753, 11754, 11755, 11756, 11757, 11758, 11759, 11760, 11761, 11762, 11763, 11764, 11765, 11766, 11767, 11768, 11769, 11770, 11771, 11772, 11773, 11774, 11775, 11776, 11777, 11778, 11779, 11780, 11781, 11782, 11783, 11784, 11785, 11786, 11787, 11788, 11789, 11790, 11791, 11792, 11793, 11794, 11795, 11796, 11797, 11798, 11799, 11800, 11801, 11802, 11803, 11804, 11805, 11806, 11807, 11808, 11809, 11810, 11811, 11812, 11813, 11814, 11815, 11816, 11817, 11818, 11819, 11820, 11821, 11822, 11823, 11824, 11825, 11826, 11827, 11828, 11829, 11830, 11831, 11832, 11833, 11834, 11835, 11836, 11837, 11838, 11839, 11840, 11841, 11842, 11843, 11844, 11845, 11846, 11847, 11848, 11849, 11850, 11851, 11852, 11853, 11854, 11855, 11856, 11857, 11858, 11859, 11860, 11861, 11862, 11863, 11864, 11865, 11866, 11867, 11868, 11869, 11870, 11871, 11872, 11873, 11874, 11875, 11876, 11877, 11878, 11879, 11880, 11881, 11882, 11883, 11884, 11885, 11886, 11887, 11888, 11889, 11890, 11891, 11892, 11893, 11894, 11895, 11896, 11897, 11898, 11899, 11900, 11901, 11902, 11903, 11904, 11905, 11906, 11907, 11908, 11909, 11910, 11911, 11912, 11913, 11914, 11915, 11916, 11917, 11918, 11919, 11920, 11921, 11922, 11923, 11924, 11925, 11926, 11927, 11928, 11929, 11930, 11931, 11932, 11933, 11934, 11935, 11936, 11937, 11938, 11939, 11940, 11941, 11942, 11943, 11944, 11945, 11946, 11947, 11948, 11949, 11950, 11951, 11952, 11953, 11954, 11955, 11956, 11957, 11958, 11959, 11960, 11961, 11962, 11963, 11964, 11965, 11966, 11967, 11968, 11969, 11970, 11971, 11972, 11973, 11974, 11975, 11976, 11977, 11978, 11979, 11980, 11981, 11982, 11983, 11984, 11985, 11986, 11987, 11988, 11989, 11990, 11991, 11992, 11993, 11994, 11995, 11996, 11997, 11998, 11999, 12000, 12001, 12002, 12003, 12004, 12005, 12006, 12007, 12008, 12009, 12010, 12011, 12012, 12013, 12014, 12015, 12016, 12017, 12018, 12019, 12020, 12021, 12022, 12023, 12024, 12025, 12026, 12027, 12028, 12029, 12030, 12031, 12032, 12033, 12034, 12035, 12036, 12037, 12038, 12039, 12040, 12041, 12042, 12043, 12044, 12045, 12046, 12047, 12048, 12049, 12050, 12051, 12052, 12053, 12054, 12055, 12056, 12057, 12058, 12059, 12060, 12061, 12062, 12063, 12064, 12065, 12066, 12067, 12068, 12069, 12070, 12071, 12072, 12073, 12074, 12075, 12076, 12077, 12078, 12079, 12080, 12081, 12082, 12083, 12084, 12085, 12086, 12087, 12088, 12089, 12090, 12091, 12092, 12093, 12094, 12095, 12096, 12097, 12098, 12099, 12100, 12101, 12102, 12103, 12104, 12105, 12106, 12107, 12108, 12109, 12110, 12111, 12112, 12113, 12114, 12115, 12116, 12117, 12118, 12119, 12120, 12121, 12122, 12123, 12124, 12125, 12126, 12127, 12128, 12129, 12130, 12131, 1213