СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Июнь 23, 2009

Ejudge — проверка задач по программированию

Опыт работы с ПСПО, Территория ПСПО
Автор: ALT Linux

Филинов Андрей Николаевич, заместитель директора по ИКТ, учитель информатики гимназии им. С.В. Ковалевской г. Великие Луки Псковской области, пишет о системе Ejudge, с помощью которой можно проверять правильность решения задач по программированию.

Что это такое?
Да, тестировать умеют многие программы, Docebo, Claroline, тот же Moodle, но только одна система способна проверить правильность решения задачи по программированию — ejudge. Все основные типы контроля знаний (варианты ответа, множественный выбор, ответ — слово, ответ — текст, многовариантность задачи — это когда разным ученикам выдаются разные варианты), все основные типы контроля знаний в системе ejudge есть. Что, очередная супер-тестилка? А вот и нет.

Система ejudge устанавливается на сервере и при наличии внешнего IP у школы способна принимать решения консольных задач по протоколу http. Гибкая система назначения оценок, выстраивание рейтинга учеников, встроенная возможность переписки с судьями и прочее, прочее. Испытать все возможности ejudge можно тут: http://ejudge.ru/ege. По этой ссылке можно ознакомиться со всеми возможностями ejudge в режиме ЕГЭ, обратите особое внимание на часть С данного теста! Множество тестов в интернете предлагают проверить знание частей А и В, но только одна способна полностью проверить даже часть С Единого Госэкзамена.

http://informatics.mccme.ru/moodle/ По этой ссылке можно увидеть пример совместного использования ejudge и moodle.

Автор системы ejudge — Александр Чернов, сайт проекта http://ejudge.ru

Установить эту чудо-систему можно на любой Linux, но для пользователей ALT Linux существуют RPM-пакеты, для версий ALT 4.0 и 4.1 . Поскольку «Школьный Сервер» является родным братом ALT Linux Desktop, только без окошек (это ж сервер!!!), то устанавливается ejudge на «ШС» без проблем из репозитория 4.1 из RPM-пакета, который собрал Денис Кириенко ftp://ftp.altlinux.ru/pub/people/dk/. Описание установки начинается здесь: https://unicorn.cmc.msu.ru/forum/viewtopic.php?f=5&t=519&sid=7191fb07af8de2a7d62b2fcf5920b832

Ещё рекомендуется ознакомиться с этим: ftp://ftp.altlinux.org/pub/people/dk/README.utf8.txt
По крайней мере у меня получилось установить ejudge многократно, пользуясь этим руководством.

Как в школе готовятся к части С в ЕГЭ? Условие задачи, примеры решения, домашняя работа. Вот тут и начинается самое интересное. Допустим в двух параллелях по 46 учеников — это ж каждую неделю надо проверить 92 работы, принесённые на листочках, у продвинутых учителей информатики — на флэшке, у самых продвинутых — в интернете (только у ленивых учеников нет файлового хостинга, да и то мне кажется, что они просто скрывают это. Сколько времени тратится на проверку решений? У меня половина рабочего времени — я люблю обсуждать решения в присутствии автора — личностный подход!

Искал программу on-line программирования, а наткнулся на ejudge. Зачем мне понадобился on-line интерпретатор/компилятор? Компилятор на домашних компьютерах учеников не приживался никак. По разным причинам не приживался или не применялся, массово, задачки учениками упорно решались без применения компиляторов. Основная версия : «А он не устанавливается!» . Итак, было огромное желание «пересадить» всех на компиляторы, задача не решилась «в лоб», а стала побочным проявлением внедрения системы ejudge.

Основное — мы отдыхаем, а ejudge проверяет задачки, причем аккуратно складывает их в архив, правильные и не очень — все сохраняет. На счёт «отдыхать» — это я пошутил. Как уже говорилось выше — основное отличие ejudge от тестирующих систем заключается в возможности автоматически проверять консольные программы на множестве языков программирования (есть даже Бейсик!).

Рекомендую почитать описание автора, Александра Чернова: http://heap.altlinux.org/pereslavl2007/chernov/abstract.html

Нужна ли школе система ejudge?

Плюсы системы:

  1. Резко повысилось количество решаемых школьниками задач.
  2. Существенно повысилась культура написания программ.
  3. Школьникам нравится , что «всё по-взрослому» (в том числе и переписка с судьями), круглосуточный on-line сервис. Видимо у школьников возникает благодарные ответные эмоции, что о них «помнят и заботятся».
  4. Задачи ОБЯЗАТЕЛЬНО компилируются и тестируются дома. Ранее — бумажный носитель с кучей ошибок в программе.
  5. Массово установлены на домашние ПК школьников различные IDE с компиляторами (TP5-7 в основном), чего не смог добиться за десятилетия работы!
  6. Возрос интерес к самому программированию, стали на уроках ТРЕБОВАТЬ объяснить теорию, чего не было аж с начала 90-х
  7. Статистика системы позволяет выявить «умных, но тихих и сверхскромных», субъективная оценка способностей ученика часто не способствовала выявлению «олимпиадников».
  8. Снята проблема с записью домашних заданий.
  9. Рейтинг выстраивает конкурентную среду, большинство хотят забраться повыше в сводной ведомости.
  10. Много чего ещё, например, мне кажется, возрастает авторитет учителя-информатика, происходит (подчёркиваю — мне так кажется) транспонирование деятельности умной программы на личность преподавателя).

Минусы:

  1. Необходимы видимые усилия для внедрения системы в Линуксе. Хотя для учителей, уже работающих с СПО ALTLinux, установка системы упрощается наличием rpm в репозиториях ALTLinux-a и очень приличной инструкцией (Спасибо Денису Кириенко!).
  2. Мало документации по работе с системой, её настройкой. Просто так устроен мир, что начинающим пользователям хочется, чтобы их «за ручку» провели по созданию одного турнира. Мне лично помогают добрые люди в лице Д.Кириенко, за что ему огромное спасибо. Спасибо, что отвечает на мои (возможно глупые) вопросы.

Вывод: система ejudge школе нужна! Хотя возможен и упрощённый вариант использования — http://informatics.mccme.ru/moodle/, именно такой вариант выбрали мои коллеги-информатики.

Комментарии (22) к “Ejudge — проверка задач по программированию”

  1. yaleks говорит:
    Июнь 23, 2009, 10:48 пп

    Т.е. совместное использование заключается в публикации задач в moodle, а проверки в ejudge? или они как-то взаимодействуют?

    Очень хорошая заметка!

  2. derugu говорит:
    Июнь 23, 2009, 11:07 пп

    Это две совершенно независимые системы, легче на первых порах использовать их раздельно. Я, например, не представляю себе, как из Мудля передавать запросы в ejudge.

  3. yaleks говорит:
    Июнь 24, 2009, 7:40 дп

    to admin: пока не зайдешь «Гостем» на moodle гимназии картинки не показываются.

  4. admin говорит:
    Июнь 24, 2009, 5:08 пп

    to yaleks: картинки починила, спасибо :)

  5. Спасибо за пиар! :)

    Совместное использование moodle и ejudge — это специальная разработка на сайте informatics.mccme.ru.

    К сожалению, мы не готовы тиражировать это решение — поскольку все делается на живом сайте и думать над проблемой переносимости решения у нас нет ни сил, ни особого желания.

    Я, например, у себя условия задач выкладываю просто в HTML и даю ссылки на задачи, куда сдавать. Удобно совмещать с школьным сайтом, построенным на wiki. Пример: http://server.179.ru/wiki/wakka.php?wakka=Informatika/10B

  6. Да, забыл дать ссылку на единственную школу с собственным сервером ejudge — server.179.ru . Может и ещё есть школы с этой системой, но я их не нашёл в интернете. В нашей школе ejudge пока содержит 2 контеста, но однозначно будем развиваться. Настройка контеста (турнира — совокупности заданий) ejudge намного сложнее, чем его установка, по крайней мере времени занимает намного больше времени. Но результат стоит того.
    Цитата:
    «И пойдет расслоение на тех, кого «зацепило» и кто будет всегда делать все и стремиться сдавать все первым и на тех, кто поймет, что у него мало что получается.»
    Да, есть такая проблема… И ещё проблема списывания, которую, впрочем, можно победить, выдавая разные варианты — ejudge это умеет. Но в целом классы, работающие с ejudge, осваивают программирование НАМНОГО лучше.

  7. > Мало документации по работе с системой, её настройкой. Просто так устроен мир, что начинающим пользователям хочется, чтобы их “за ручку” провели по созданию одного турнира.

    Желающие помочь развитию проекта и способствовать внедрению современных технологий в образовательный процесс могу написать учебное пособие по установке и использованию ejudge. Как установить, как добавлять пользователей, как создавать контесты, как добавлять задачи… Такое руководство было бы очень нужным.

  8. >Как установить

    Есть Ваша инструкция, вполне рабочая, если только картинок добавить…И так, по-мелочи, из личного опыта.

    >как добавлять пользователей, как создавать контесты, как добавлять задачи…

    Собирался написать для себя, чтоб легче было работать. Выложу на нашем Мудл-е. Скорее всего.
    Эту б систему, да в ЕГЭ! Есть ли надежда, хоть маленькая? Проверял работы по ЕГЭ — сколько экспертов, столько и мнений в части С. Один ставит 3 балла, второй 0…
    О списывании решений…Как с ними бороться: У меня в параллели 4 группы. Одной давать Pascal, второй С, третьей Яву, а четвёртой что? Бейсик? Фу! Плюс многовариантность задач.

  9. > Выложу на нашем Мудл-е.

    Выложите — дайте ссылочку. Например, на форуме ejudge.

    > Эту б систему, да в ЕГЭ! Есть ли надежда, хоть маленькая?

    В 2007 году уже делался эксперимент про проведению вступительного экзамена в формате ЕГЭ в МАИ. То есть настоящий ЕГЭ провести так нельзя (не полагается по регламенту), но модельный экзамен в рамках НИР был проведен, http://ejudge.ru/ege является одним из результатов этого НИР.

    Но для того, чтобы внедрять эту технологию для повсеместного проведения ЕГЭ в компьютерной форме нужны весьма значительные деньги (именно на разработку технологии проведения экзамена). На этом дело и остановилось… В общем, рано или поздно, но к полностью компьютерному ЕГЭ мы прийдем — но на это может понадобиться лет 10 или 20…

    > О списывании решений…Как с ними бороться: У меня в параллели 4 группы. Одной давать Pascal, второй С, третьей Яву, а четвертой что?

    python, ruby, ну в крайнем случае — perl или php, но этого лучше избегать, как и бейсика.

    А если серьезно, то лучше не распыляться по языкам, выберите один наиболее приемлемый, и им пользуетесь. Со списыванием бороться просто — просто просматривать все исходные коды, прежде чем OK ставить. В ejudge при просмотре исходных кодов есть функция сравнения двух сабмитов при помощи diff — можно сравнивать сабмиты двух участников.

    Сначала вам будут сдавать просто идентичные файлы — тут нужно просто обращать внимание на размер сдаваемых решений по каждой задаче. Если два школьника сдают файлы одинакового или близкого размера — это повод сравнить их решения. Потом школьникам торжественно демонстируются их совпадающие коды и оба решения дисквалифицируются.

    Потом школьники начнут хитрить — будут менять имена переменных, вставлять пробелы и менять форматирование. Тут нужно уже внимательно сравнивать, обращать внимание на алгоритмы… Но если задача сложная, то как ни меняй названия переменных, все равно видно, что алгоритм один и тот же. В общем, я каждый год с каждым новым классом начинаю бороться со списыванием — они сдают списанные решение, я жестко это пресекаю. При этом никогда не разбираюсь, кто у кого списал, а просто снижаю оценки всем, у кого идентичные решения. Через полгода-год дети понимают, что происходит, и двоечники смиряются, а отличники просто перестают давать двоечникам списывать задачи. Проблема списывания исчезает, можно расслабиться и начать бороться со списыванием в новом классе :)

    Со списыванием всегда можно бороться, было бы желание…

  10. На самом деле в ЕГЭ был опыт использования подобного решения, разработанного ИТМО 9компьютерная олимпиада по информатике), там также часть С проверялась автоматически, и программу можно было составлять и походу «компилировать» на паскале, С, яве и даже школьном алгоритмическом. Псковские школьники в 2007 году участвовали в этом эксперименте: http://www.pskovedu.ru/?project_id=164

    Об этом широко и заранее сообщалось всем районам области.
    Система была построена на распределенном кластерном решении Oracle, что обеспечивало должную безопасность и надежность, необходимую при проведении ЕГЭ. Все было неплохо документировано. Решение написано на яве и при определенных усилиях может быть переведено на FB или Postgress и выпущено в свободном варианте.

    Ejudge — неплохая система, вообще с изучением программирования все нехорошо сейчас. Несмотря на экзамен по выбору много двоек в тч и в нашем регионе: http://www.pskovedu.ru/?project_id=2054

  11. А совсем на самом деле в 2007 году ИТМО проводил свой эксперимент на своей системе, а ФИПИ проводило свой эксперимент в виде вступительного экзамена в МАИ с использованием ejudge.

  12. Говоря, что нет систем, подобных ejudge, уточняю — нет воспроизводимых, по крайней мере в школе, систем. А ejudge может уже сейчая установить любая школа.

  13. Добрый день!

    Хотелось бы немного прокомментировать прочитанное.
    >> … но только одна система способна проверить правильность решения задачи по программированию — ejudge …

    Это слишком сильная метафора. Таких систем огромное количество. Cайты, на которых они точно есть, и которыми я пользуюсь уже несколько лет.
    Русские:
    acm.timus.ru (УРГУ)
    acm.sgu.ru (СГУ)
    Зарубежные:
    acm.uva.es (Испания)
    Их очень много.. Еще есть у Польши и Индии и Японии. Как-то японская команда по программированию показывала мне их, адреса не запомнил.
    И это только те, что установлены на веб-серверах и крутятся там круглые сутки. А есть еще системы, работающие на различных соревнованиях. Таких как ACM чемпионаты по программированию или Школьные соревнования по программированию. И эти системы могут работать не просто на уровне класса или двух, а не раз опробованы в условиях огромнейшего количества участников со всего мира. Еще есть просто виртуозная система с сайта TopCoder.com. В ней можно вытворять просто потрясающие вещи. Не просто сдавать код и проверять его, а еще и тестировать код друг друга на собственных тестах. Очень полезный на практике навык — находить ошибки в логике по исходному коду. У нее есть виртуозный плюс, гасящий все минусы — она распространяется как один jnlp файл (доступен на сайте). Чистая кросс-платформенность.

    А что касается применения таких вещей в школе.. Я был бы против, если бы меня спросили. Можно говорить в школе о том, что такие системы есть. Можно делать подборки задач с них, для решения на контрольных, можно рассказывать какие навыки на каких задачах можно отточить. Но пусть этим занимаются только те, кто хочет. А заставить написать программу того, кто этого делать не желает — вы не сможете. А если и сможете, то, извините меня, будете не правы. Насколько ученик/студент запомнит насильно вбитое в него знание? На 45 минут урока.. Не подумайте, что я злостный не любитель информатики и написания программ. Я всегда ей увлекался, работаю в Интел и люблю соревнования по программированию, но идею внедрения таких систем в школу никогда бы не одобрил. Такие системы, на мой взгляд, имеет смысл ставить, например, на олимпиадах (где они работают уже много лет), на собеседовании на работу можно попросить порешать (такое тоже есть), можно для самостоятельных тренировок и заточки мастерства использовать (тем более есть). А в школе — только говорить о таких системах и всячески «спонсировать» ссылками. Можно разбирать задачи на основные тематики, но только с теми, кому это, опять-таки, интересно.

    Критика и комментарии приветствуются.

    P.S. Думаю, что TopCoder никогда не будет против, если дистрибутив будет содержать в себе их jnlp файлик. Ежели только «за».

    Антон Лапшин.
    e-mail: alapshin@acm.org

  14. aen говорит:
    Июнь 29, 2009, 12:27 дп

    Денис, а ФИПИ тоже в 2007 году проводил эксперимент в МАИ? Есть ли заключение о его результатах, продолжается ли какая-либо работа на эту тему в ФИПИ и/или МИОО? Можем ли мы чем-то помочь?

  15. В 2007 году именно ФИПИ выполняло НИР на апробацию компьютерной модели проведения ЕГЭ по информатике. Практическая часть проводилась в форме вступительного экзамена в МАИ, т.е. МАИ было просто площадкой по проведению эксперимента по договоренности с деканатом 8-го факультета. Итоговый отчет написан и сдан заказчику, основной результат отчета — успешная проверка возможности проведения экзамена в компьютерной форме при условии необходимой адаптации заданий и формы проведения экзамена. Отчета самого у меня нет, но есть статья в научном сборнике ФИПИ с докладом о результатах, к сожалению, только в бумажном виде.

    ИТМО одновременно делало свой аналогичный эксперимент — по сути, ИТМО и ФИПИ поделили между собой деньги, выделенные на этот проект. Как мы знаем, у них тоже что-то более-менее получилось, но их итогового отчета я тоже не видел.

    Дальнейшие работы не ведутся по простой причине — нет денег и людей, желающих этим активно занимать. То есть для того, чтобы глобально развернуть компьютерную форму проведения экзамена нужны куда большие финансовые и людские ресурсы. Хотя вот А.Л.Семенов хочет продвигать компьютерную форму проведения экзамена, так что возможно в будущем году мы будем над этим работать.

    Возможно, что куда более реальным будет проведение не ЕГЭ, а экзамена в 9 классе по информатике в компьютерной форме. Например, по причине того, что этот экзамен не столь формализован (а ЕГЭ — это прежде всего огромное количество формально прописанных механизмов, так как это официальный государственный вступительный экзамен), а экзамен для 9 класса не столь жестокий по правилам проведения и как раз, похоже, вступает в фазу активного эксперимента.

    А именно, имеется тенденция к проведению всех выпускных экзаменов после 9 класса в бланковой форме, напоминающей ЕГЭ. Информатика плетется в самом хвосте эксперимента (так как не самый главный предмет), но в новой форме проведения экзамена в этом году участовало около 1000 школьников более, чем из 100 школ (прежде всего Саратовской области).

    Какие лично у меня были задумки по проблематике использования ejudge для проведения экзаменов или олимпиад:

    1. Научить ejudge проверять файлы в виде электронных таблиц или текстовых документов (например, мы даем задание на «посчитать что-нибудь в электронной таблице, ответ записать в такую-то ячейку», выполненное задание в виде, скажем ods-файла, сдается на проверку, ejudge разбирает формат сданного файла и определяет, верно ли вычислен ответ).

    2. Научить ejudge проверять алгоритмы на Кумире — но это прежде всего вопрос к разработчикам Кумира относительно возможности автоматического исполнения программ на Кумире.

    3. Поскольку разворачивать linux-сервер достаточно сложно, а разворачивать на нем ejudge — еще сложнее, то сделать live-cd с работающим ejudge из коробки, использующий flash в качестве рабочего каталога.

  16. *Антон Лапшин
    >А заставить написать программу того, кто этого делать не желает — вы не сможете. А если и сможете, то, извините меня, будете не правы.

    Это уже к Минобразу, спрашивайте там, зачем они заставляют детей в школе учить программирование. Мне это нравится (учить детишек программированию), ЕГЭ это требует, а новые формы контроля повышают успеваемость.

    >Таких систем огромное количество
    И только ejudge можно установить в школе и с русским интерфейсом.

  17. И что с этим ContestAppletProd.jnlp делать? Чувствую, это клиент к системе…

  18. Антон,

    относительно того, что различных тестирующих систем — много, Вы, конечно же, правы. Но все тестирующие системы делятся на две группы

    1. Веб-сервисы с онлайн-тестированием, ссылки на которые вы давали, содержащие некоторый набор задач.
    2. Автономные системы, которые можно разворачивать на собственном сервере.

    Когда Вы говорите о тестирующих системах, Вы думаете прежде всего о системе, для проведения соревнований. На самом деле это не так — тестирующие системы можно успешно применять для начального обучения программированию, только мало кто думает о возможности такого применения. Между тем опыт ряда школ показывает, что это более, чем реально и это реально повышает эффективность учебного процесса. Например, прихожу я в понедельник на первый урок в школу…
    — Дети, поскольку мне надоело смотреть, как вы в час ночи вместо того, чтобы спать, сдаете задачки, то теперь тестирующая система будет недоступна с 23:00 до 7:00.
    — Ну тогда мы вместо того, чтобы задачки решать, будем в CounterStrike играть…

    Все сайты с онлайн-системами, как правило, ориентированы на олимпиадные задачки, а не на учебный процесс. Естественно, такие сайты в средней школе не нужны — не тот уровень. А вот на http://informatics.mccme.ru собрана подборка задач специально для обучения программированию, начиная с самых простейших на одну-две инструкции if. Эти материалы уже абсолютно реально использовать в средней школе, в отличии от TopCoder, и некоторые школы так и делают, работая прямо с сайтом informatics.mccme.ru прямо на уроках.

    Что до автономных систем — то желание школы иметь автономную систему вполне понятно, чтобы можно было самому добавлять туда задачи. Про TopCoder я не понял (не специалист по этому сайту) — что, TopCoder распространяет СЕРВЕРНУЮ часть своей системы? А если это клиентская часть — то особого толка от нее нет, ведь нужен еще правильный курс задач для учебного процесса.

  19. Денис,

    Честно сказать, мне трудно не согласиться с тем, что Вы написали. Спасибо за ответ. Да, согласен с тем, что при словах «тестирующая система» у меня возникает ассоциация именно с соревновательным мероприятием. Согласен также и с тем, что в школу нужна совсем другая база задач.

    Нет, Top Coder распространяет только клиентскую часть. Но с его базой задач (я о втором дивизионе), думаю там можно найти совсем простые. Хотя, может быть, я опять ошибаюсь со сложностью задач. А что касается jnlp файла, то его в Windows при установленной JRE 1.6+ просто двойным кликом. кажется, запустить можно. В Linux (пробовал на Mandriva 2009.0 и Ubuntu 9.04) запускал из командной строки.
    javaws ./ContestApplet.jnlp, кажется. Да, я совсем забыл.. Он же англоязычный, стало быть, тоже не пойдет.

    Что же касается «заставлять-не заставлять» писать программы, то я прекрасно понимаю, что этого требует наше Мин. образования, а не кому-то это просто так захотелось. Просто наблюдаю такие вот «заставляния» в университете по сей день и ничего хорошего из этого никогда не выходило. А за «Мне это нравится (учить детишек программированию)…» можно только сказать большое спасибо, т.к. это необходимое условие хорошего обучения для учеников.

    Посмотрел получше сайт http://informatics.mccme.ru, там сложность как-нибудь коррелирует с оценкой? или это просто отдельная шкала? А если в целом, то отличный сайт. Сейчас листаю на нем задачи.

  20. > Но с его базой задач (я о втором дивизионе), думаю там можно найти совсем простые.

    Скажем так — возможно на TopCoder можно найти несколько простых задачек, пригодных для обучения — но во-первых их там заведомо немного, во-вторых, их еще нужно найти, в-третьих, все-таки TopCoder — не сайт для обучения программированию, там нет методически выстроенной последовательности учебных задач.

    > А что касается jnlp файла,

    Если одно конкретное (и явно не повсеместно распространенное) java-приложение легко запускается просто из командной строки после простого копирования, то в дистрибутив его класть смысла нет. Кому надо — тот скопирует и запустит.

    > Посмотрел получше сайт http://informatics.mccme.ru, там сложность как-нибудь коррелирует с оценкой? или это просто отдельная шкала?

    Что-то я не очень понимаю, что такое «оценка» и «сложность»? Это что, из раздела «База задач»? Нет, базу задач на informatics смотреть не нужно, она там экспериментальная. Нужно смотреть на учебные курсы — «Изучение языка программирования», «Структуры данных и алгоритмы» — посередине страницы.

  21. Отличная система, и без проблем ставится в дистрибутивах на основе debian с помощью ALien из готовых RPM-пакетов:

    Конвертируем в пакеты deb:
    alien -d ejudge-2.3.13-alt2.M41.1.i586.rpm
    alien -d libreuse-4.3.8-alt0.M41.1.i586.rpm
    Устанавливаем полученные пакеты:
    dpkg -i alien -d libreuse-4.3.8-alt0.M41.1.i586.deb
    dpkg -i ejudge-2.3.13-alt2.M41.1.i586.deb

  22. Данная Система Тестирования давно используется в МГУ на Московских городских Олимпиадах по информатике и Программированию и дажк на региональных Чемпионатах по программированию для студентов Московского Региона.
    Автор Тестирующей Системы в течении многих лет был ученым секретарем Оргкомитета по проведения Московских Олимпиад и Чемпионатов по информатике и программированию.
    ВАКаймин, профессор, доктор комп.наук,
    автор базовых учебников информатики
    для вузов и школ.

Оставьте комментарий