Message boards :
Science :
New experiment PADLS for distributed computing
Message board moderation
Previous · 1 . . . 11 · 12 · 13 · 14 · 15 · 16 · 17 . . . 22 · Next
Author | Message |
---|---|
Send message Joined: 11 Jul 17 Posts: 174 Credit: 4,964,801 RAC: 2 |
Этому может быть несколько объяснений. Для того чтобы сказать, что происходит мне нужны Ваши(!) исходные данные проблемного интервала и Ваш(!) комплект программ для проверки. Пришлите мне на почту. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Этому может быть несколько объяснений. Все результаты (мои и walli) выложены здесь. Тестируемый вариант №174 и следующий за ним #174 0 2 3 4 5 6 7 8 9 1 2 1 4 6 3 7 5 9 0 8 6 5 2 0 8 9 1 3 7 4 1 7 0 3 9 8 4 2 5 6 5 6 9 8 4 2 0 1 3 7 4 3 8 1 7 5 9 0 6 2 9 8 7 5 0 1 6 4 2 3 3 4 6 9 2 0 8 7 1 5 7 9 1 2 6 4 3 5 8 0 8 0 5 7 1 3 2 6 4 9 #175 0 2 3 4 5 6 7 8 9 1 2 1 4 6 3 7 5 9 0 8 6 5 2 0 8 9 1 3 7 4 1 7 9 3 2 8 4 6 5 0 3 6 5 9 4 2 8 0 1 7 9 4 1 8 7 5 0 2 3 6 7 0 8 5 9 1 6 4 2 3 5 8 6 1 0 3 9 7 4 2 4 9 7 2 6 0 3 1 8 5 8 3 0 7 1 4 2 5 6 9 Комплект программ для проверки вы знаете (это вторая ваша версия). Я её не меняла за всё время работы в эксперименте. Точно эта версия выложена для всех участников эксперимента. То есть walli работает этой же версией ПО. Моя конфигурация: 50000 КФ СН ДЛК на цикл, 10 циклов на одно выполнение скрипта, 4 потока. |
Send message Joined: 24 Dec 21 Posts: 59 Credit: 0 RAC: 0 |
@Demis I've just sent you a private message with the download link to my results in case you need them for review/verification. If you want me to double check intervals that have already been processed by someone, or if you need further information about my setup, just let me know. :) |
Send message Joined: 11 Jul 17 Posts: 174 Credit: 4,964,801 RAC: 2 |
Хорошо. Запустил на перепроверку. Буду смотреть - что получится. |
Send message Joined: 11 Jul 17 Posts: 174 Credit: 4,964,801 RAC: 2 |
Ok. |
Send message Joined: 24 Dec 21 Posts: 59 Credit: 0 RAC: 0 |
I go up to #250, then I'll take a break because I need my computers for PrimeGrid. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
I go up to #250, then I'll take a break because I need my computers for PrimeGrid. Хорошо. Спасибо за вашу помощь! |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Скачала результаты от walli из интервалов №№ 215, 220-222, 224, 225, 227, 227-229. В этих интервалах найдено 3528 КФ ОДЛК (сырые результаты). Отлично! Добавила результаты в девятую порцию. Сейчас буду обрабатывать эту порцию результатов. Обработала девятую порцию результатов эксперимента. Эта порция дала 42642 КФ ОДЛК, в том числе 92 двушки. На данный момент БД эксперимента содержит 126070 КФ ОДЛК, в том числе 274 двушки и одну тройку. Это прекрасные результаты! Спасибо всем участникам эксперимента! |
Send message Joined: 11 Jul 17 Posts: 174 Credit: 4,964,801 RAC: 2 |
Моя конфигурация: 50000 КФ СН ДЛК на цикл, 10 циклов на одно выполнение скрипта, 4 потока. Пока не успел все данные перепроверить, но уже, может быть, приходит понимание "что происходит". Предварительно моя версия такая: все дело в разнице "50000" и "200000". Т.е. чем меньше первое значение, тем слабее мощность генерации. В данном случае в четыре раза. Учитывая, что полная мощность этого интервала "800604": Мощьнометр интевалов КФ ДЛК10 Линейка №15 cтарт: 0 2 3 4 5 6 7 8 9 1 2 1 4 6 3 7 5 9 0 8 6 5 2 0 8 9 1 3 7 4 1 7 0 3 9 8 4 2 5 6 5 6 9 8 4 2 0 1 3 7 4 3 8 1 7 5 9 0 6 2 9 8 7 5 0 1 6 4 2 3 3 4 6 9 2 0 8 7 1 5 7 9 5 . . . . . 8 . 8 . . . . . . . . 9 Стоп: 0 2 3 4 5 6 7 8 9 1 2 1 4 6 3 7 5 9 0 8 6 5 2 0 8 9 1 3 7 4 1 7 9 3 2 8 4 6 5 0 3 6 5 9 4 2 8 0 1 7 9 4 1 8 7 5 0 2 3 6 7 0 8 5 9 1 6 4 2 3 5 8 6 1 0 3 9 7 4 2 4 9 7 2 6 0 3 1 8 5 8 3 0 7 1 4 2 5 6 9 Найдено СНДЛК: 800604 Найдено КФ: 800604 Время работы: 2.761 сек Для выхода нажмите любую клавишу . . .А мы в скрипте исследуем только небольшие кусочки, например по 50.000 из 800.604. При этом эти 50.000 напрямую никак не относятся к диапазону 800.604, т.е. не корректно вычислять 800.604 - 50.000 = .750604 (!). Но, повторюсь, это предварительная версия. Соответственно чем выше число, например "200.000" или даже "2.000.000", тем больше будет найдено сырых результатов. Но при этом и поиск будет дольше. По поводу разной последовательности квадратов в результатах. Это нормальное явление. У нас работает много потоков. Невозможно предсказать когда именно завершится тот или иной поток. Решает, точнее влияет на это, процессор. Поэтому тот поток, который завершился вперед, тот и пишется в массив памяти, а потом в файл. Если ввести отслеживание потока, например ввести ожидание в каждом из них, то это все равно как на одном потоке считать. Поток вообще очень тонкая и мало управляемая штука в силу своей архитектуры. (Поток, если он запустился, должен завершиться, другого не дано. Т.е. работает от "сих" до "сих".) |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
А мы в скрипте исследуем только небольшие кусочки, например по 50.000 из 800.604. У нас в скрипте работают циклы. В каждом цикле генерируется заданное количество КФ СН ДЛК, у меня это 50000 штук. Это делается программой Белышева. Программа генерирует точно заданное значение КФ СН ДЛК, начиная от заданного стартового квадрата. Конечный квадрат порции запоминается, и в следующем цикле генерируется следующая порция из заданного количества КФ СН ДЛК. И так в каждом следующем цикле. У меня за 10 циклов генерируется и проверяется ровно 50000*10=500000 КФ СН ДЛК. Поэтому данная версия мне не кажется правильной. Если задать генерацию, по 200000 КФ СН ДЛК в одном цикле, то циклов потребуется меньше, всего 4 полных цикла и в пятом цикле будет сгенерирован остаток КФ СН ДЛК 800604 - 200000*4 = 604. Почему же не корректно вычислять 800.604 - 50.000 = .750604 (!). ??? Именно так и вычисляется при генерации каждой порции в циклах. Именно так и работает скрипт: он выполняет ровно столько циклов, сколько нужно для генерации всей порции КФ СН ДЛК - не больше и не меньше. Генератор КФ СН ДЛК Белышева работает абсолютно точно, это многократно проверено. Я думаю, что дело не в генерации КФ СН ДЛК. Кстати, walli в своём тесте использовал разное количество циклов: 100 и 500. Результаты вам доступны (walli дал вам ссылку на его результаты). Во всех его тестах результат одинаковый - 7 квадратов. Следовательно, количество циклов не влияет на результаты. Вы можете продолжить тест в этом направлении (для того же интервала №174). Задайте всего три цикла (!) и по 300000 КФ СН ДЛК на один цикл (!). Скрипт отработает точно за три цикла, сгенерирует и проверит точно 800604 КФ СН ДЛК. Не больше и не меньше! Я завтра с утра запущу этот тест по-прежнему с 4 потоками. Посмотрим на результаты у меня и у вас. PS. Далее, можно задать всего один цикл (!) и 800604 КФ СН ДЛК на один цикл. Это будет самый точный тест. Программа Белышева сгенерирует точно заданное количество КФ СН ДЛК в одном цикле, эта порция КФ СН ДЛК проверится. Посмотрим на результаты в этом случае. |
Send message Joined: 11 Jul 17 Posts: 174 Credit: 4,964,801 RAC: 2 |
У меня за 10 циклов генерируется и проверяется ровно 50000*10=500000 КФ СН ДЛК.100 и 500 это НЕ "использовал разное количество циклов" (в том смысле, что это НЕ значит, что цикл отработал 100 или 500 раз). Эти числа используются для принудительной остановки скрипта при достижении такого значения счетчика цикла. А так, скрипт останавливается когда в выходных данных обнаруживается искомый квадрат. Вот смотрите когда у Вас 50000*10=500000, а у меня или walli 200000*5=1000000, то мы оба находим по 7-мь квадратов. Потому что Ваш потерянный квадрат находится в оставшихся 500.000 от 1.000.000 - 500.000. Причем, не смотря на множитель "5", реально этот квадрат лежит в 4-ой итерации (если по 200.000) между 600.000 и 800.000. Если эти значения разделить на 50.000, то можно получить примерный диапазон итерации где найдется потерявшийся квадрат. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Вот смотрите когда у Вас 50000*10=500000, а у меня или walli 200000*5=1000000, то мы оба находим по 7-мь квадратов. Ну что за ерунда! Я выполняю скрипт два раза, потому что за один раз у меня генерируется и проверяется только 50000*10=500000 КФ СН ДЛК! А всего в этом интервале содержится 800604 КФ СН ДЛК. По-вашему, я один раз выполнила скрипт что ли? Или, может, по-вашему, второе выполнение скрипта неправильное какое-то? То есть оставшиеся от первого выполнения скрипта 800604 - 500000 = 300604 КФ СН ДЛК неправильно генерируются и проверяются? Вы хоть немного думайте, прежде чем писать такую ерунду. Да, пожалуйста, сделайте тест с одним циклом (!), задав на один цикл 800604 КФ СН ДЛК. А я сейчас запущу тест на три цикла (!), задав 300000 КФ СН ДЛК на один цикл. Здесь уж точно скрипт выполнится один раз (!), так как 300000 * 3 = 900000, что больше 800604. Ну абсолютно негде здесь решениям теряться!! И если в этом тесте одно решение по-прежнему потеряется, значит, причину мы пока не знаем. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Тест запущен Cycle run: 1 13.07.2022 05:37 run: generator_kf Генератор КФ ДЛК10 Старт: 0 2 3 4 5 6 7 8 9 1 2 1 4 6 3 7 5 9 0 8 6 5 2 0 8 9 1 3 7 4 1 7 0 3 9 8 4 2 5 6 5 6 9 8 4 2 0 1 3 7 4 3 8 1 7 5 9 0 6 2 9 8 7 5 0 1 6 4 2 3 3 4 6 9 2 0 8 7 1 5 7 9 5 . . . . . 8 . 8 . . . . . . . . 9 Найдено КФ[15]: 300000 время поиска: 1.141 сек Проверено 300000 СНДЛК Время работы: 1.587 сек Программа завершена . . . Скопировано файлов: 1. Run: family_mar input.txt output.txt Find Marijazh DLS (except symmetrical) for family LS Used config file: family_mar.conf UseThreads:1 MaxThread:4 ShowWrittenOnScreen:1 BlockToContinueRun:0 Have LS: 300000 nb_threads: 4 Прекрасно видно, что в первом цикле программа сгенерировала 300000 КФ СН ДЛК, как и задано мной на один цикл. Сейчас программа проверит эту порцию и перейдёт во второй цикл, где опять сгенерирует 300000 КФ СН ДЛК. И потом - в третий цикл, в котором снова сгенерирует 300000 КФ СН ДЛК, но при проверке этой порции будет найден конечный квадрат интервала; он должен быть найден раньше, чем проверится вся эта порция, сгенерированная в третьем цикле, потому что конечный квадрат интервала находится в порции из 800604 КФ СН ДЛК. По-моему, логика теста железная. Ждём результат. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Ещё раз покажу окно программы Cycle run: 1 13.07.2022 05:37 run: generator_kf Генератор КФ ДЛК10 Старт: 0 2 3 4 5 6 7 8 9 1 2 1 4 6 3 7 5 9 0 8 6 5 2 0 8 9 1 3 7 4 1 7 0 3 9 8 4 2 5 6 5 6 9 8 4 2 0 1 3 7 4 3 8 1 7 5 9 0 6 2 9 8 7 5 0 1 6 4 2 3 3 4 6 9 2 0 8 7 1 5 7 9 5 . . . . . 8 . 8 . . . . . . . . 9 Найдено КФ[15]: 300000 время поиска: 1.141 сек Проверено 300000 СНДЛК Время работы: 1.587 сек Программа завершена . . . Скопировано файлов: 1. Run: family_mar input.txt output.txt Find Marijazh DLS (except symmetrical) for family LS Used config file: family_mar.conf UseThreads:1 MaxThread:4 ShowWrittenOnScreen:1 BlockToContinueRun:0 Have LS: 300000 nb_threads: 4 written to file output.tmp is: 1 (count last DLK is: 1932637 ) Программа нашла в первой порции 1932637 подходящих ДЛК и проверяет их на ОДЛК. По завершении этой проверки программа сообщит, сколько найдено ОДЛК. Наблюдаем дальше. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Первый цикл завершился . . . . . . . Run: family_mar input.txt output.txt Find Marijazh DLS (except symmetrical) for family LS Used config file: family_mar.conf UseThreads:1 MaxThread:4 ShowWrittenOnScreen:1 BlockToContinueRun:0 Have LS: 300000 nb_threads: 4 written to file output.tmp is: 1 (count last DLK is: 1932637 ) Checked DLK: 86837865 Run Time (s): 27612.6 Real Run Time (s): 6903 Found Fancy DLS: 1 They are written to file output.txt . . . . . . . . . Как я понимаю, найдено всего одно решение в этом цикле Found Fancy DLS: 1 Начался второй цикл. Кстати, "Found Fancy DLS" Google переводит так "Нашел прикольный ДЛС" :) |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Demis Кстати, чтобы проверить мой результат, вам надо банально выполнить тест с моей конфигурацией. Если у вас решение в моей конфигурации не потеряется, значит, причина в моём компьютере, то есть высказанная выше версия: мой компьютер на может работать в 4 потока. Очень просто это проверить! |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Второй цикл завершён . . . . . Run: family_mar input.txt output.txt Find Marijazh DLS (except symmetrical) for family LS Used config file: family_mar.conf UseThreads:1 MaxThread:4 ShowWrittenOnScreen:1 BlockToContinueRun:0 Have LS: 300000 nb_threads: 4 written to file output.tmp is: 3 (count last DLK is: 18031113 ) Checked DLK: 86395203 Run Time (s): 28427 Real Run Time (s): 7107 Found Fancy DLS: 3 They are written to file output.txt --------- . . . . . . . . В этом цикле найдено 3 КФ ОДЛК. В двух первых циклах найдено 4 КФ ОДЛК. Начался третий (последний) цикл. Ждём! |
Send message Joined: 11 Jul 17 Posts: 174 Credit: 4,964,801 RAC: 2 |
Такой тест делался первым. И не один раз. Результат не совпал с Вашим. Очередной повторный тест пока еще выполняется. Машина очень нагружена другими расчетами. Поэтому то, что делалось за 15-20 минут, сейчас делается часами. Просто напомню, что еще примерно 4-ре года назад мной в переписке поднималась эта проблематика. Но тогда мне так и не удалось получить ответ почему это происходит. Помню, что даже примеры высылал. Но сейчас это уже не суть важно, главное что теперь Вы сами видите как это получается. Алгоритм нашего поиска Вами описан на страничке: https://boinc.progger.info/odlk/forum_thread.php?id=217 Подробное описание у нас здесь: https://boinc.progger.info/odlk/forum_thread.php?id=217&postid=7860#7860 Не в вдаваясь во внутренние аспекты работы программы family_mar (и не важно оригинальная или многоядерная) было замечено, что чем больше подаешь ей на вход, тем "больше интересного" получаешь на выходе. Что в принципе логично. (При этом процессе я натыкался на такие моменты, что если делишь исходные данные на несколько частей, то часть "интересного" не видна. Т.е. понятно, что программа оперирует только тем "что в ее памяти", что тоже логично. При этом, мультипотоковость - это тоже деление на части. Что не есть хорошо, в данном случае.) Но на самом деле нам этот(и) "потерянный(ые) квадрат(ы)" не принципиально важен(ы). Нам важны получаемые, производные, "сырые результаты" с другими линейками, которые мы получаем на выходе алгоритма, а потом мы их исследуем. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Третий цикл завершён . . . . . . . . Run: family_mar input.txt output.txt Find Marijazh DLS (except symmetrical) for family LS Used config file: family_mar.conf UseThreads:1 MaxThread:4 ShowWrittenOnScreen:1 BlockToContinueRun:0 Have LS: 300000 nb_threads: 4 written to file output.tmp is: 3 (count last DLK is: 14577760 ) Checked DLK: 86738270 Run Time (s): 28505.3 Real Run Time (s): 7126 Found Fancy DLS: 3 They are written to file output.txt Found compared LS from what.txt. Exit to end script. script is end... Для продолжения нажмите любую клавишу . . . В этом цикле найдено 3 КФ ОДЛК. Итак, всего найдено 7 КФ ОДЛК. Вот они, записанные в файле result.txt 0 4 8 2 5 7 9 6 3 1 6 1 4 7 9 3 5 0 2 8 9 8 2 0 6 4 1 3 7 5 8 5 6 3 0 1 7 2 9 4 1 7 3 9 4 6 0 8 5 2 7 6 0 1 8 5 2 9 4 3 3 9 7 5 2 8 6 4 1 0 5 3 9 4 1 2 8 7 0 6 2 0 1 6 3 9 4 5 8 7 4 2 5 8 7 0 3 1 6 9 0 2 5 4 3 8 9 6 7 1 9 1 3 5 6 7 2 8 0 4 6 7 2 1 5 4 8 3 9 0 8 5 7 3 2 0 4 9 1 6 3 9 8 6 4 2 1 0 5 7 1 8 6 9 7 5 0 4 3 2 7 0 4 8 9 3 6 1 2 5 2 3 9 0 1 6 5 7 4 8 4 6 1 2 0 9 7 5 8 3 5 4 0 7 8 1 3 2 6 9 0 3 4 7 8 9 5 6 2 1 7 1 8 9 5 4 3 2 0 6 4 9 2 5 6 1 8 3 7 0 1 6 0 3 9 2 4 8 5 7 8 5 7 0 4 6 1 9 3 2 2 4 3 6 7 5 9 0 1 8 3 7 5 8 2 0 6 1 9 4 6 8 9 1 0 3 2 7 4 5 9 2 6 4 1 7 0 5 8 3 5 0 1 2 3 8 7 4 6 9 0 4 9 5 3 2 7 8 6 1 4 1 8 0 9 3 5 6 2 7 6 5 2 4 0 1 9 3 7 8 8 2 6 3 1 7 4 9 0 5 5 7 3 2 4 6 8 1 9 0 2 9 1 7 8 5 3 0 4 6 3 8 7 9 5 0 6 4 1 2 9 6 5 1 2 8 0 7 3 4 1 0 4 6 7 9 2 5 8 3 7 3 0 8 6 4 1 2 5 9 0 2 3 4 5 6 7 8 9 1 2 1 4 6 3 7 5 9 0 8 6 5 2 0 8 9 1 3 7 4 1 7 9 3 2 8 4 6 5 0 3 6 5 9 4 2 8 0 1 7 9 4 1 8 7 5 0 2 3 6 7 0 8 5 9 1 6 4 2 3 5 8 6 1 0 3 9 7 4 2 4 9 7 2 6 0 3 1 8 5 8 3 0 7 1 4 2 5 6 9 0 2 3 7 5 4 9 8 6 1 3 1 7 6 0 9 5 4 2 8 4 5 2 9 3 8 1 0 7 6 7 8 6 3 1 0 4 5 9 2 1 0 9 2 4 7 8 6 3 5 2 6 8 0 9 5 3 1 4 7 9 4 0 8 7 1 6 2 5 3 8 9 5 1 6 3 2 7 0 4 5 3 1 4 2 6 7 9 8 0 6 7 4 5 8 2 0 3 1 9 0 3 7 2 5 9 8 6 4 1 9 1 3 0 6 4 7 8 2 5 1 0 2 4 8 7 9 3 5 6 5 7 9 3 2 1 0 4 6 8 2 8 5 7 4 6 1 9 3 0 3 9 6 8 7 5 2 0 1 4 7 4 8 9 1 3 6 5 0 2 6 2 4 1 0 8 5 7 9 3 4 5 0 6 9 2 3 1 8 7 8 6 1 5 3 0 4 2 7 9 Теперь я совсем ничего не понимаю. Грешила на свой компьютер. Но вот в другой конфигурации все 7 решений на моём компьютере найдены. Пока не вижу никакой внятной причины, почему в предыдущей моей конфигурации одно решение теряется. |
Send message Joined: 6 Apr 17 Posts: 14339 Credit: 0 RAC: 0 |
Ничего пока не вижу: как это получается. Вижу только, что решение теряется в одной из конфигураций. Причина непонятна! Не в вдаваясь во внутренние аспекты работы программы family_mar (и не важно оригинальная или многоядерная) было замечено, что чем больше подаешь ей на вход, тем "больше интересного" получаешь на выходе. При чём здесь "чем больше подаешь ей на вход"? Мы даём программе на проверку отдельные порции результатов. В сумме эти порции равны в любой конфигурации. Значит, решений программа должна находить одинаковое количество. Что программе дать на проверку 100000 КФ СН ДЛК + 100000 КФ СН ДЛК что подать сразу эти же 200000 КФ СН ДЛК решений должно быть одинаковое количество. Если вы с этим не согласны, приведите конкретный контрпример именно для программы family_mar. Что вы там писали 4 года назад, я абсолютно не помню. При этом, мультипотоковость - это тоже деление на части. Что не есть хорошо, в данном случае. Что значит "не есть хорошо"? То есть, по-вашему, деление процесса проверки программой family_mar на несколько потоков может привести к потере решений? Но на самом деле нам этот(и) "потерянный(ые) квадрат(ы)" не принципиально важен(ы). Не поняла. Почему же потерянные решения нам не важны? Вот потерянное мной решение в интервале №174 0 2 3 7 5 4 9 8 6 1 3 1 7 6 0 9 5 4 2 8 4 5 2 9 3 8 1 0 7 6 7 8 6 3 1 0 4 5 9 2 1 0 9 2 4 7 8 6 3 5 2 6 8 0 9 5 3 1 4 7 9 4 0 8 7 1 6 2 5 3 8 9 5 1 6 3 2 7 0 4 5 3 1 4 2 6 7 9 8 0 6 7 4 5 8 2 0 3 1 9 Почему же оно, по-вашему, не важно? А я утверждаю, что оно очень важно, потому что я проверила: этого решения нет во всей предыдущей БД эксперимента! То есть это решение не было найдено в последующих интервалах, оно найдено только в этом интервале. Кстати, этот квадрат не из линейки №15, он из другой линейки. Последний вопрос: что вы скажете по поводу моего теста с тремя циклами? В этом тесте найдены все 7 квадратов, потерь нет. Я очень подробно показала этот тест. И нигде не вижу прокола, ошибки, всё работает абсолютно чётко и точно. Теперь надо вот так же подробно исследовать тест в моей изначальной конфигурации и попытаться найти внятную причину потери решения. Но, как я понимаю, у вас сейчас машина занята, и вы не можете выполнить этот тест и исследовать его. Оставим. |
©2024 (C) Progger