рд╕реЛрддреЗ рд╕рдордп рд╡рд┐рдЪрд╛рд░: рднрдЧреНрди рдорд┐рд╢реНрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рд╕реАрдЬрд╝рди рдореЗрдВ, рдореИрдВрдиреЗ рджреЗрд╢ рдореЗрдВ рд░рд╛рдд рдмрд┐рддрд╛рдИ рдФрд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╕реЛ рд╕рдХрд╛ред рдФрд░ рдлрд┐рд░ рдореЗрд░рд╛ рджрд┐рдорд╛рдЧ XOR рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рджреМрдбрд╝ рдкрдбрд╝рд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░реЗрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореАрдареЗ рд░реВрдк рд╕реЗ рд╕реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдореВрд▓ рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдлреЗрд░рдмрджрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рднрдЧреНрди рдорд┐рд╢реНрд░рдг рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ (рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдЪрд╛рд░ рд░рд╛рддреЛрдВ рдХреЗ рдмрд╛рдж рд╕реЛ рдЧрдпрд╛)ред

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрди рд╕рдорд╛рди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рд╡реЗрдХреНрдЯрд░ рдПрди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ "рдкреВрдВрдЫ" рдмрд╕ рджрд╛рдИрдВ рдУрд░ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рднреА рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдпреЗ рдПрди рднрд╛рдЧреЛрдВ рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдлреЗрд░рдмрджрд▓ рд╡реЗрдХреНрдЯрд░ рдПрдо [рдПрди] рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд┐рд╢реНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рддрдм рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдорд┐рд╢реНрд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореВрд▓ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдПрди рдмрд░рд╛рдмрд░ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЗ рдЕрдВрджрд░ рд╕рдорд╛рди рдорд┐рд╢реНрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдм рдпрд╣ рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд░реВрдк рд╕реЗ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд┐рдХреНрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рдордорд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рдд, рдореВрд▓ рдбреЗрдЯрд╛ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реА рд╡реЗрдХреНрдЯрд░ m [N] рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЬрдм рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЗрд╕реЗ рднрдЧреНрди рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдорд┐рд╢реНрд░рдг рдорд┐рд╢реНрд░рдг рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИ (рдФрд░ "рднрдЧреНрди" рд╢рдмреНрдж рд╢рд╛рдВрдд рд╣реИ)ред рдФрд░ рдореИрдВ рддреБрд░рдВрдд рдЗрд╕реЗ Google рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдврд╝ рдЧрдпрд╛ (рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рджреЗрд╢ рдореЗрдВ рдореЛрдмрд╛рдЗрд▓ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдирд╣реАрдВ рдорд┐рд▓рд╛! рдлрд┐рд░ рдореЗрд░реА рдЖрдБрдЦреЛрдВ рдореЗрдВ рдПрдХ рдЙрддреНрд╕рд╛рд╣ рдХреА рдЬреНрд╡рд╛рд▓рд╛ рдЬрдЧреА - рдХреНрдпрд╛ рдореИрдВ рд╕рдЪрдореБрдЪ рдХреБрдЫ рдирдпрд╛ рдФрд░ рд╕рд░рд▓ рд▓реЗрдХрд░ рдЖрдпрд╛ рд╣реВрдБ? рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рдж, рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реЛ рдирд╣реАрдВ рд╕рдХрд╛ - рд▓реЗрдХрд┐рди рдореИрдВ рдорд┐рд╢реНрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдирд╛ рдирд╣реАрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдХреИрд╕реЗ рд╣реЗрдмрд░ рдкрд░ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рдПрдХ рд╣рдлреНрддреЗ рдмрд╛рдж, рдЬрдм рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдШрд░ рдкрд░ рдерд╛, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрд▓рд╕ рдкрд░ рдХрд╛рдмреВ рдкрд╛ рд▓рд┐рдпрд╛ рдФрд░ рд╕реА ++ рдХреЛрдб рд▓рд┐рдЦрд╛, рдЬрд┐рд╕рдореЗрдВ рджрд┐рдП рдЧрдП рдирдВрдмрд░ рдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЕрдкрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХ рдордирдорд╛рдирд╛ рдорд┐рд╢реНрд░рдг рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

C ++ рдХреЛрдб


рдиреЛрдЯ: рд╢рдлрд▓рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдХреЛрдб рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

class FractalShuffle { private: unsigned int* positions; unsigned int power; string data; /* *         : * 0, 1, 2, 3 -> 3, 2, 1, 0 */ void setReversePositions(unsigned int sizeOfVector) { unsigned int swap; for (unsigned int i = 0; i < sizeOfVector / 2; i++){ swap = positions[i]; positions[i] = positions[sizeOfVector - i - 1]; positions[sizeOfVector - i - 1] = swap; } } void recursiveShuffling(unsigned int startIndex, unsigned int atomSize) { string shuffledData; //    unsigned int size = atomSize - (atomSize % power); //   //(""   ) if (atomSize >= power){ //,     //atomSize -    ,    atomSize = size / power; //    for (unsigned int i = 0; i < power; i++){ shuffledData.append(data, startIndex + positions[i] * atomSize, atomSize); //         //(   positions),   - atomSize } for (unsigned int i = 0; i < size; i++){ data[startIndex + i] = shuffledData[i]; //       } shuffledData.clear(); // , //      //   for (unsigned int numberOfPart = 0; numberOfPart < power; numberOfPart++){ //     power  //        recursiveShuffling(startIndex + numberOfPart * atomSize, atomSize); } } } public: FractalShuffle(){}; ~FractalShuffle(){}; string shuffleString(string initialData, unsigned int _power) { if (_power <= 1){ return initialData; } if (initialData.length() < _power){ return initialData; } data = initialData; //    ,  //  .    . //  ,    . power = _power; positions = new unsigned int[power]; //   for (unsigned int i = 0; i < power; i++){ positions[i] = i; //    "0, 1, 2, 3..." } setReversePositions(power); //       recursiveShuffling(0, data.length()); //,  ""  delete[] positions; //       C++ return data; //   } }; 


рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

"Hello_world!" N = 2 рдХреЗ рд▓рд┐рдП: dl! Owrol_eHl
"Hello_world!" N = 3 рдХреЗ рд▓рд┐рдП: dlr! W_ooleHl
"Hello_world!" N = 4 рдХреЗ рд▓рд┐рдП: ld! Worlo_Hel
"Hello_world!" N = 8 рдХреЗ рд▓рд┐рдП: ow_olleHrld!

рдмрд╛рд░реАрдХрд┐рдпреЛрдВ


рдмреЗрд╢рдХ, рдХреБрдЫ рд╕рд╣реА рдкрд░ "рдкреВрдВрдЫ" рджреНрд╡рд╛рд░рд╛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдореВрд▓ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯреНрд╕ рдЕрдкрдиреА рдЬрдЧрд╣ рдкрд░ рд░рд╣реЗрдВрдЧреЗ, рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд░рд╛рдм рд╣реИред
рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ "рдкреВрдВрдЫ" рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЖрдк рд╡реЗрдХреНрдЯрд░ рдХреЛ рджреЛ рдмрд╛рд░ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд╣рд▓реЗ рдмрд╛рдПрдВ рдФрд░ рдлрд┐рд░ рджрд╛рдПрдВ "рдкреВрдВрдЫ" рдХреЗ рд╕рд╛рде), рдпрд╛ рдкреВрдВрдЫ рдореЗрдВ "рдирдХрд▓реА" рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗрдХреНрдЯрд░ рд╢реЗрд╖ рджреНрд╡рд╛рд░рд╛ рдПрди рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛред рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди "рдкреВрдВрдЫ" рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ (рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдХреБрдЫ рддрд░реАрдХреЗ рдорд┐рдХреНрд╕рд┐рдВрдЧ рдХреА рд╕рдорд░реВрдкрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреЗ рд╣реИрдВ)ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдорд┐рд╢реНрд░рд┐рдд рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдорд┐рд╢реНрд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдорд┐рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЫреЛрдЯреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдмрдврд╝рддреЗ рдПрди)ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдорд┐рдХреНрд╕рд┐рдВрдЧ рдлрдВрдХреНрд╢рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордорд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдЖрдкрдХреЛ рдПрдХ рдЪрдХреНрдХрд░ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛, рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдФрд░ рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднреНрд░рдордкреВрд░реНрдг рдЕрд░реНрдз-рд╕реЛ рдореЗрдВ рдкрд╣рд▓рд╛ рдирд╣реАрдВ рдерд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдкрд╕рдВрдж рдереАред рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА!
рдореИрдВ рдПрдХ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛: рдмрд┐рд╕реНрддрд░ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

Source: https://habr.com/ru/post/In146583/


All Articles