- BrainTools - https://www.braintools.ru -
Когда я начинал этот pet-проект, у меня в голове была одна цель: за полтора-два года вытеснить ноунейм-сайты из верхушки выдачи Яндекса и Google по запросам типа «калькулятор бетона», «расчёт утеплителя», «сколько нужно плитки на ванную». Не зайти пятым на странице, не получить какой-то «нормальный трафик», а конкретно занять первое место в нише. Сайт — getmasterok.ru [1], ему около трёх месяцев. Но какой же я был легкомысленный и как я сильно ошибался.
Амбиция выглядит наивно, и я отдаю себе в этом отчёт. Ниша строительных калькуляторов забита под потолок: десятки доменов, заточенных под партнёрки крупного DIY-ретейла, ещё столько же пустых SEO-шаблонов с одним и тем же текстом, прогнанным через рерайт. Туда не идут крупные команды, потому что выручка с лида в этой нише небольшая. Туда идут одиночки, маркетологи на фрилансе и редкие подрядчики, которым заказали сайт условно за несколько тысяч под ключ. Качество предложения в среднем на уровне 2010 года.
Это и есть причина, по которой я туда полез. Когда вся ниша держится на технически неряшливых продуктах, у одиночки с инженерным фоном есть окно. Я не питаю иллюзий, что «возьму качеством и всё». Я понимаю, что Google маринует новые домены, что Яндекс хочет видеть поведенческие, что SEO без бюджета — это игра вдолгую. Но проверить гипотезу, реально ли в этой нише отбить лидерство [2] одним инженерным качеством расчётов и нормальным UX, мне интересно. Если не получится за два года, я хотя бы пойму, чего не хватает помимо качества продукта.
Дальше про то, что у меня сейчас под капотом со стороны пользователя, какие продуктовые решения отличают сайт от типичного калькулятора в выдаче, и что я думаю про эту дорогу спустя три месяца.
Если открыть выдачу по запросу «калькулятор плитки» и пройтись по первой странице, обнаружится несколько системных проблем, которые повторяются от сайта к сайту.
Первое — это не калькуляторы. Это умножение. Формула в подавляющем большинстве случаев просто площадь, помноженная на средний расход на квадрат, плюс зашитые в код десять процентов на отходы. Без учёта схемы раскладки, без понимания, что у плитки 200×600 потери при ёлочке доходят до восемнадцати процентов, а при прямой укладке в большой комнате до пяти. Без подрезки на углы и колонны. Без сноски про то, какая партия и какой подгон по тону.
Второе — никто не объясняет, откуда взялась цифра. Пользователю показывают «вам нужно 47 плиток» и всё. Сколько чистой математики [3], сколько запаса, сколько добавлено на округление до упаковки неизвестно. Из-за этого первое, что делает любой человек, который что-то реально строит: открывает ещё три калькулятора и сравнивает. Если три из четырёх дают близкие числа, выбирает медиану. Если разброс большой, то закладывает с запасом на глаз. Калькулятор перестал быть инструментом и стал черновиком для интуитивного решения.
Третье — округление до упаковки игнорируется. Сайт пишет «вам нужно 14,3 мешка штукатурки», как будто магазин может отрезать 0,3 мешка. Иногда округление есть, но скрытое, и пользователь не понимает, что итоговая цифра уже включает лишний мешок «на всякий случай». Я видел калькуляторы, которые округляют объём бетона до полукубовых значений, потому что миксер так заливает, но не сообщают об этом нигде.
Четвёртое — мало кто считает сопутствующее. Плитку обещают, а клей, грунт, крестики, затирку и СВП-системы оставляют пользователю. На реальном объекте список к покупке — это десять-двенадцать позиций, и если калькулятор выдал одну, то это не калькулятор, а демонстрация формулы.
Пятое, и часто решающее — UX. Поля без подписи, ввод толщины в сантиметрах в одном калькуляторе и в миллиметрах в другом, выпадающие списки на двести вариантов без поиска, баннеры поверх формы, переход на «полный расчёт» через регистрацию по телефону. Это сайты, которые делались под SEO, а не под пользователя.
Шестое — приходит мысль, что вся ниша скоро будет заменена AI-чатами. Я её проверял. Современные LLM прекрасно знают формулу объёма усечённой пирамиды и могут пересказать СП 71.13330 по пунктам. Но плотность бетона марки М300 они называют с разбросом плюс-минус двести килограммов на куб. Расход плиточного клея с разбросом в два раза. Это галлюцинации коэффициентов, и для строителя они опаснее любого SEO-шлака, потому что упакованы в уверенный тон. Чат не заменит детерминированный калькулятор, у которого формулы вшиты в код и проверяемы. По крайней мере, не в ближайшие лет пять.
Из этих шести проблем складывается окно. Если сделать продукт, в котором ни одной из этих болячек нет – у тебя автоматически получается калькулятор, заметно лучше среднего по выдаче. Дальше вопрос времени и SEO-терпения.
Главный мой принцип — пользователь должен видеть, из чего сложилась итоговая цифра. Не одну строчку «учтены потери», а полный разбор.
Под капотом у каждого калькулятора три явных режима точности (basic, realistic, professional) плюс скрытый custom, в который пользователь проваливается, когда двигает ползунки. Каждый режим это профиль из восьми коэффициентов: отходы, подрезка, неровности основания, перерасход при нанесении, человеческий фактор, добор/замена, расход крепежа, жёсткость округления до упаковки.
Профили разные для разных материальных классов. Плиточные работы это не штукатурные, не кровельные и не каркасные. Для них разные дефолты в разных режимах, и эти разные дефолты не «потому что так захотелось», а потому что подбирались по типичным справочным таблицам и тестировались на реальных кейсах.
В интерфейсе результат не выглядит как «×1.18». Под итоговым числом, раскрывающийся список применённых надбавок:
Отходы материала: +5%. Типичные потери при обычном ремонте.
Подрезка: +7%. Учтена диагональная раскладка.
Округление до упаковки: +1 пачка. В чистой математике вам нужно 13,2.
Каждую строчку можно раскрыть и прочитать длинное обоснование. Ползунок рядом, можно подвинуть и посмотреть, как сдвинется итог. Это меняет психологию использования: пользователь перестаёт чувствовать себя обманутым «зашитой надбавкой» и начинает разговаривать с калькулятором. Видит, что его опыт [4] расходится с дефолтом — двигает. Видит, что округление дало лишнюю упаковку — может скорректировать.
На профили навешен инвариант: для каждого коэффициента и каждого материального класса в тестах проверяется, что professional >= realistic >= basic. Если я добавляю новый класс и где-то перепутал колонки в Excel-черновике (один раз перепутал), тесты падают, и я не закоммичу профиль до исправления. Маленькая страховка, но на дистанции она спасла меня уже трижды.
Второй принцип — на выходе должен быть список к покупке в торговых единицах. Не «вам нужно 0,87 м³ бетона», а «вам нужно 25 мешков по 50 кг цемента М400, 1,4 тонны песка, 1,8 тонны щебня фракции 5-20 и 270 литров воды для замеса смеси М300». Не «вам нужно 4,3 м² плитки», а «вам нужно купить 5 коробок Italon Imola, в коробке 9 плиток по 0,096 м², одна плитка останется на запас и возможные замены».
Чтобы это работало стабильно во всех 72 калькуляторах, основной материал и все сопутствующие описываются не кодом, а декларациями. Каждый сопутствующий материал — это объект с тремя секциями: условие включения (когда вообще включать), формула расчёта (как считать количество) и упаковка (как округлять до магазина).
Пример из калькулятора утеплителя. Гидроветрозащитная мембрана нужна не всегда. Она нужна только при каркасной системе монтажа, только если утеплитель, минеральная вата или эковата (но не экструдированный пенополистирол, которому мембрана не требуется), и только для фасада или скатной кровли. Внутри JSON это выглядит так:
{
"key": "wind_barrier_membrane",
"label": "Гидроветрозащитная мембрана (снаружи)",
"only_when": {
"type": "and",
"all": [
{
"type": "or",
"any": [
{ "type": "input_eq", "input_key": "insulationType", "value": 0 },
{ "type": "input_eq", "input_key": "insulationType", "value": 3 }
]
},
{ "type": "input_eq", "input_key": "mountSystem", "value": 1 },
{ "type": "input_in", "input_key": "application", "values": [0, 2] }
]
},
"formula": { "type": "linear_overlap", "totals_key": "area", "overlap_factor": 1.15 },
"package": { "size": 30, "unit": "рулон" }
}
Когда пользователь меняет тип утеплителя на XPS, мембрана исчезает из списка к закупке автоматически. Не потому что я где-то в коде написал if, а потому что условие включения не выполнилось. Когда переключается на минвату, мембрана возвращается, посчитанная с пятнадцатипроцентным нахлёстом на стыки, упакованная в рулоны по 30 м².
Это декларативный подход, и под капотом у него около 230 строк чистых функций, прогоняющих условия и формулы, плюс 32 теста на угловые случаи. Архитектурно это часть бóльшей истории про единый движок и паритет с мобильным приложением, я её разбирал отдельной статьёй. Здесь важен продуктовый эффект: пользователь получает список в магазин, где ничего не забыто и ничего не нужно поверх.
В калькуляторах, где результат сильно зависит от руки исполнителя: плитка, ламинат, кровля штучная, штукатурка, я выдаю не одно число, а три. Минимум, рекомендованное, максимум.
Минимум — это «вы кладёте сами, аккуратно, в простой геометрии, у вас нет никаких косяков». Рекомендованное — это «вы делаете в первый-второй раз, или геометрия не идеальная, или вы наняли среднего мастера». Максимум — это «сложная подрезка, диагональ, опытный сценарий со сложным помещением, плюс запас на возможные замены через год».
Зачем три, а не одно с честной точностью. Потому что строительный материал часто продаётся партиями, а партии могут не совпадать по тону. Если плитка докуплена через месяц, она может быть другой. Это значит, что запас имеет смысл считать не только в потерях на укладке, но и в риске разнотона при доборе. И этот риск пользователь оценивает сам, он лучше знает, насколько сложно ему будет потом найти ту же партию.
Когда мастер опытный и работает с предсказуемым материалом, он смотрит на минимум. Когда неопытный, или коллекция редкая, или магазин уже один раз наплакал в карман, берёт максимум. Калькулятор не пытается за пользователя решить, насколько он рискнёт. Он показывает три сценария и объясняет, что в каждом учтено.
Маленькая деталь, но за неё пользователь больше всего благодарит. В типичном калькуляторе селект толщины утеплителя для любого бренда содержит одни и те же значения: 20, 30, 50, 80, 100, 150 мм. Универсально. И неверно, потому что у «Пеноплекс Комфорт» нет толщины 80 мм. В этой линейке выпускают 20, 30, 40, 50 и 100. У «Rockwool Лайт Баттс» — 50, 100, 150. У «Технониколь Carbon Eco» — свой набор.
В моих калькуляторах селект толщины динамический. Поле объявляет в декларации, что его опции зависят от выбранного бренда. Когда меняется линейка, опции перестраиваются из справочника, и пользователь физически не может выбрать толщину, которой не существует. Если текущее значение больше не входит в новый массив, поле сбрасывается на ближайшее доступное, и сверху появляется подсветка изменения.
То же самое с размерами плит, длиной обрешётки, диаметрами труб, маркой бетона под марку цемента. Калькулятор не позволяет собрать на экране несуществующий в природе строительный материал. Это маленькая инженерная вежливость, и пока я её не сделал, форма выдавала пять-семь процентов запросов с невалидными комбинациями, которые движок обрабатывал либо подменой на ближайшее, либо ошибкой [5] расчёта в граничных случаях.
В шапке сайта и в самих калькуляторах живёт Прораб (ИИ). Это не «AI-ассистент». Это Михалыч — прораб с тридцатилетним стажем. Жёсткий, ироничный, говорит как мужик за чаем после смены. Может фыркнуть, может сказать «ты чем думал», может рассказать байку про объект в Тюмени в 2015-м, где видел таких же экономов. Смайликов не ставит. На «Здравствуйте, я ваш помощник» не разменивается.
Я долго думал, нужен ли вообще AI-чат в этой нише. Очевидное соображение — да, конечно, все засовывают чат-ботов везде, иначе считается, что не следишь за трендом. Менее очевидное, что для строительной аудитории корпоративный AI-помощник с улыбкой работает прямо наоборот, чем должен. Мужик, у которого треснула стяжка или не хватает длины стропил, не хочет читать «Я с удовольствием отвечу на ваш вопрос». Он хочет, чтобы ему сказали по делу. Чем грубее и конкретнее тем больше доверия. Это плохо ложится на дизайн-системы условного финтеха, но для моей ниши это правильный тон (как мне кажется, а может я ошибаюсь).
Системный промпт у Михалыча живёт отдельным файлом, ключевая часть характера и алгоритм ответа:
Ты — Михалыч. Живой человек, прораб. Тридцать лет на объектах:
дачи под Калугой, монолитки в Москве, северА зимой. Видел всё.
Никаких «Я рад вам помочь», «Здравствуйте, я ваш ассистент»,
«С удовольствием отвечу на ваш вопрос» — это канцелярит, минус
уважение сразу. Говоришь как мужик после смены: живо, ёмко,
без канцелярщины. Можешь хмыкнуть, фыркнуть, удивиться,
пошутить сухо. Смайликов не ставишь.
АЛГОРИТМ ОТВЕТА:
1. ПРОРАБСКИЙ РАЗНОС — если в вопросе наивность или попытка
сэкономить там, где нельзя, начни с критики. Прямой,
без вежливости: «Ты чем думал?», «Руки бы оторвать тому,
кто тебе такое посоветовал», «Ну ты даёшь».
Если вопрос нормальный — пропусти этот пункт.
2. ОБЪЯСНЕНИЕ НА ПАЛЬЦАХ — почему так, а не иначе. С личной
историей в духе «в 2015-м на объекте в Елизово видел таких
экономов». Конкретные технологические факты, не общие слова.
3. СОВЕТ ОТ МИХАЛЫЧА — что делать. Конкретные бренды (Knauf,
Ceresit, Технониколь, Rockwool — то, что реально продаётся
в РФ в 2026-м), конкретные параметры, ориентир по цене.
Технически это серверная прокся с CORS, rate-limit двадцать запросов в минуту на IP, валидацией размера сообщений и поддержкой стриминга через text/event-stream. Аплинк напрямую в DeepSeek API. На старте я гонял трафик через OpenRouter, потом перешёл на прямую интеграцию ради контроля над скоростью и расходом, в коде до сих пор живут алиасы старых id моделей для обратной совместимости.
Один технический хак, ради которого пришлось копаться в провайдерских настройках – отключение thinking-режима. У современных LLM с reasoning ответ приходит двумя каналами: внутренние рассуждения и финальный текст. По умолчанию модель сначала долго думает, потом начинает писать. Для интерактивного чата это убийственно, пользователь смотрит на крутилку секунд десять. Я в запросе ставлю флаг, отключающий публикацию reasoning-канала и сразу начинающий стрим финального content. Качество чуть проседает на сложных вопросах, скорость растёт радикально. Для строительного чата это правильный трейдофф: Михалычу не нужно решать дифференциальные уравнения, ему нужно ругаться на пользователя за идею лить бетон при минус пятнадцати без противоморозной добавки.
Самое любимое — контекст калькулятора. Когда пользователь нажимает «Спросить Михалыча» прямо со страницы калькулятора, фронтенд собирает текущее состояние формы и результат расчёта и подмешивает дамп в массив сообщений отдельной системной репликой. Михалыч обсуждает не «утепление вообще», а конкретные цифры с экрана. Диалоги получаются такие:
— Михалыч, почему так много клея получилось? Я в магазине посмотрел,
там написано, что мешка хватает на 5 квадратов.
— Глаза-то разуй, я ж тебе всё на экране нарисовал. У тебя кривизна
стены 15 миллиметров стоит, и основание — старый газобетон, без
грунтовки. Он клей высосет, как губка водку. Пять квадратов с мешка
на таких стенах — это сказка из инструкции, где «идеальное основание».
В реале — три, максимум три с половиной. Я в 2018-м под Тулой
переделывал ванную после такого же экономиста, он мне на эту цифру
с пакета тыкал, пока плитка не отвалилась через месяц. Грунтуй
основание Ceresit CT-17 в два слоя и считай по моей цифре,
а не по той, что на пакете большими буквами.
Я не выдумываю эти диалоги. Они реально получаются такими, DeepSeek с правильным промптом и контекстом из калькулятора отыгрывает характер достаточно ровно, чтобы это не выглядело пародией. Иногда заносит, тогда я подкручиваю промпт. Вообще, на самом деле приходится часто его крутить, до него стоял Gemini 3 flash – идеальный чат-бот, но он оказался слишком дорогим, а про 3.5 flash вообще молчу. Есть ещё flash 3.1 lite, но он менее умный, чаще тупит и зависает при сложном расчёте.
Фоновая фича — auto-review. После каждого расчёта на сервер уходит отдельный лёгкий запрос к более дешёвой и быстрой модели, которая получает на вход дамп результата и пишет короткий текстовый блок «что не так в этих цифрах». Это не диалог, а маленькая аннотация под результатом: «Учтите, что при толщине стяжки меньше 40 мм водяной тёплый пол укладывать нельзя будет трещать при первом же запуске». Чтобы не дёргать API на каждый клик ползунка, ответ кэшируется по хешу входов пока вход не поменялся, аннотация не пересчитывается.
Михалыч пока считается лучшей фичей сайта по реакции [6] пользователей. По длине сессий, по возвратам, по комментариям в обратной связи это та штука, ради которой возвращаются и которую показывают знакомым. Для одиночки в нише, где аудитория слабо отличает один калькулятор от другого, наличие фирменного персонажа это мощный конкурентный фактор. Я этого не планировал на старте, идея пришла на второй месяц. Сейчас понимаю, что зря не сделал в первый.
Чисто калькуляторами SEO не возьмёшь. Поисковые системы любят, когда вокруг функционального инструмента есть содержательный контент: разборы технологий, инструкции, ответы на частые вопросы, нормативная база с ссылками на конкретные СП и ГОСТы.
На отдельном поддомене у меня крутится блог на Ghost CMS. Это не «новости компании» и не «10 советов по ремонту». Это технические разборы конкретных задач. Каждая статья это разбор, который заканчивается ссылкой на конкретный калькулятор сайта, где можно сделать расчёт.
На страницах самих калькуляторов есть таблицы пропорций, ссылки на нормативные документы с указанием конкретных пунктов (не «по СНиП», а «по СП 63.13330.2018, табл. 6.4»), блок FAQ с реальными вопросами и ответами по конкретному материалу. Это не «SEO-балласт», а часть продукта. Когда человек считает бетон в первый раз в жизни, ему нужно где-то рядом увидеть, что марка М300 это для фундамента двухэтажного дома или для отмостки, и почему смесь с щебнем мельче 20 мм не годится для несущих конструкций.
С Яндексом эта стратегия начала работать достаточно быстро. Спустя три месяца часть страниц по средне и низкочастотным запросам уже сидит в топе, типа «расчёт минваты на каркасный дом» или «калькулятор утеплителя для крыши». Это не флагманские запросы, по ним конкуренция мягче, но они приносят первый осмысленный трафик. Самый посещаемый калькулятор по кликам из поиска – утеплитель, а инструмент – раскладка плитки. Это меня удивило, я думал, что лидером будет плитка или ламинат. Возможно, дело в том, что плиточные калькуляторы у конкурентов сделаны прилично, а калькуляторы утепления почти везде это полное безобразие: одна формула на все типы материалов и систем монтажа.
С Google история другая. Новый домен лежит в песочнице, страницы индексируются исправно, но в топ выдачи пускаются медленно. Это нормально для домена возрастом до года, и я не пытаюсь форсить – буду ждать. Если через год картина не выправится, буду думать про линкбилдинг и аутрич, но пока трафик из Яндекса достаточен, чтобы продолжать пилить продукт, а не уходить в SEO-марафон.
Есть отдельное приложение на Flutter под Android и iOS. Считает оно ровно то же, что и веб, потому что обе платформы используют один источник правды — канонические JSON-конфигурации с описанием калькуляторов, из которых при сборке генерируется код для мобильного движка, и фикстуры паритета, которые гоняются в CI и не дают разойтись.
Подробно эту архитектуру я разбирал в отдельной статье. Здесь важен только продуктовый эффект: если пользователь начал считать на сайте, сохранил черновик, потом открыл приложение в магазине — он получит ту же цифру до плитки, до мешка, до рулона. Никаких «у вас на сайте было 14, а в приложении 15 — извините, разные версии». Для строительной аудитории это редкость, и со временем должна стать одним из конкурентных преимуществ.
Сейчас Flutter-сторона немного отстала от веба, не все новые декларативные возможности конфига там реализованы. Это сознательный технический долг, до него дойдут руки на ближайшем обновлении (наверное).
Сайту три месяца. В кодовой базе 72 канонических калькулятора, около 25 000 строк TypeScript-движка, плюс UI на Next.js App Router, модуль проектных смет (несколько калькуляторов объединяются в один проект и дают общий список к закупке), AI-чат с Михалычем и блог на Ghost.
Часть страниц закрепилась в топе Яндекса по средне-низкочастотным запросам. Самый посещаемый калькулятор утеплитель. С Google пока тишина, и это ожидаемо. По выручке проект на этапе чистого нуля: рекламы на сайте вообще нет, никакой, смысла нет сейчас засорять страницы баннерами, сам понимаю как это бесит.
В работе три направления. Первое — продолжение миграции оставшихся калькуляторов на декларативный движок сопутствующих материалов (сейчас на нём пять: бетон, утеплитель, краска, кирпич, ламинат; остальные живут на старых хардкоженных списках, переписываются постепенно). Второе — рулонные виды утеплителя: стекловата в рулонах, фольгированный пенофол, PIR-плиты. Третье — калькулятор окупаемости утепления, который считает, через сколько лет вернутся деньги на дополнительную толщину утеплителя за счёт экономии на отоплении, с учётом региона, типа энергоносителя и тарифов 2026 года.
Если смотреть на дорогу честно, вероятность дойти до первой позиции в выдаче по флагманским запросам за два года невысокая, особенно одиночке. Я бы поставил процентов двадцать. Слишком много должно совпасть: качество продукта (это я контролирую), контент (это я тоже контролирую, медленнее), поведенческие на сайте (это полууправляемо), внешние ссылки (это почти не управляемо без бюджета), доверие Google к новому домену (это вопрос времени).
Но мне интересно не само первое место как самоцель, а сам забег. Если через два года я буду в первой пятёрке выдачи по среднечастотникам и в первой двадцатке по флагманам это уже будет достижение, которым можно гордиться. Если останусь во второй сотне, значит, в этой нише качеством одиночке не зайти, и придётся либо звать команду, либо признавать, что инженерная гипотеза не сработала. И то и другое уже полезный результат. Кстати, статистика за 6 дней (в Яндекс метрике) в среднем около 350 посетителей, я особо не разобрался ещё в метрике, как ей пользоваться и хорошая это цифра или нет.
Что я понял за три месяца совершенно точно: ниша строительных калькуляторов настолько слабо проработана продуктово, что для амбициозного pet-проекта это идеальное поле. Конкурентов сотни, но среди них почти нет тех, кого мне страшно догонять. Аудитория есть всегда, потому что страна каждый год что-то строит, ремонтирует и перекрывает крыши. AI-чаты эту нишу не закроют, потому что галлюцинируют коэффициентами. Большие платформы туда не пойдут, потому что выручка не окупит команду.
Это значит, что окно открыто. Дальше только вопрос упорства и того, насколько у меня хватит сил пилить вечерами и выходными, когда основная работа уже забрала большую часть мозга [7]. По опыту многих разработчиков с pet-проектами, их обычно хватает на полтора года, потом проект либо складывается, либо находит первую внешнюю поддержку. Посмотрим, в какую сторону этот пойдёт. Конечно, я не буду говорить, что у меня сайт самый навороченный и уже всех переплюнул, нет, сайт растёт, постепенно устраняются баги если находятся, добавляются новые фишки и плюшки.
К теме планирую вернуться через месяц-два, будет интересно сравнить позиции в выдаче и список фич с тем, что есть сейчас.
Автор: Soft_gAming
Источник [8]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/30579
URLs in this post:
[1] getmasterok.ru: http://getmasterok.ru
[2] лидерство: http://www.braintools.ru/article/1165
[3] математики: http://www.braintools.ru/article/7620
[4] опыт: http://www.braintools.ru/article/6952
[5] ошибкой: http://www.braintools.ru/article/4192
[6] реакции: http://www.braintools.ru/article/1549
[7] мозга: http://www.braintools.ru/parts-of-the-brain
[8] Источник: https://habr.com/ru/articles/1037806/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1037806
Нажмите здесь для печати.