Algorithms in Python - Full Course for Beginners

Поділитися
Вставка
  • Опубліковано 21 лис 2024

КОМЕНТАРІ • 188

  • @divineiso6365
    @divineiso6365 2 роки тому +56

    ⭐ Course Contents For Mobile Guys
    ⌨ (0:00:00) Intro & course overview
    ⌨ (0:07:07) Factorials refresher
    ⌨ (0:10:04) CODING CHALLENGE: Factorial program using iteration, recursion
    ⌨ (0:14:57) What is a permutation?
    ⌨ (0:16:34) CODING CHALLENGE: Recursive permutation
    ⌨ (0:20:13) Iterative permutation example
    ⌨ (0:22:17) 8/N queens problem: theory & explanation
    ⌨ (0:23:57) Real world example of permutations
    ⌨ (0:24:49) Lesson recap
    ⌨ (0:26:11) What are data structures?
    ⌨ (0:27:53) What is a one-dimensional array?
    ⌨ (0:29:01) Search & sort
    ⌨ (0:30:39) CODING CHALLENGE: Linear search
    ⌨ (0:31:00) Binary search
    ⌨ (0:32:06) CODING CHALLENGE: Iterative binary search
    ⌨ (0:33:31) Coding a recursive binary search
    ⌨ (0:34:47) Bubble sort
    ⌨ (0:36:42) CODING CHALLENGE: Bubble sort
    ⌨ (0:38:02) Insertion sort
    ⌨ (0:39:24) CODING CHALLENGE: Insertion sort
    ⌨ (0:40:36) Linked lists
    ⌨ (0:44:01) CODING CHALLENGE: Linked list (traverse, search, add, delete, header, nodes, tail)
    ⌨ (0:52:12) Hash tables
    ⌨ (0:56:27) Lesson recap
    ⌨ (0:57:42) Divide & conquer algorithm paradigm: uses, benefits and more
    ⌨ (1:00:43) Merge sort
    ⌨ (1:02:48) CODING CHALLENGE: An efficient merge sort
    ⌨ (1:05:48) Getting judged mercilessly on LeetCode
    ⌨ (1:06:47) Getting Python to do the work for us with sorted()
    ⌨ (1:07:33) Matrix multiplication
    ⌨ (1:10:06) CODING CHALLENGE: Matrix multiplication
    ⌨ (1:11:20) Strassen algorithm
    ⌨ (1:14:45) CODING CHALLENGE: Strassen algorithm
    ⌨ (1:16:27) Lesson recap
    ⌨ (1:17:21) What is a greedy algorithm?
    ⌨ (1:19:20) Assign mice to holes conceptual overview
    ⌨ (1:21:45) CODING CHALLENGE: Assign mice to holes
    ⌨ (1:23:10) Fractional knapsack
    ⌨ (1:23:36) Understanding the fractional knapsack problem with a (light-hearted) dystopian apocalypse example
    ⌨ (1:25:54) Coding challenge prep
    ⌨ (1:27:13) CODING CHALLENGE: Fractional knapsack
    ⌨ (1:31:49) Egyptians fractions
    ⌨ (1:34:03) CODING CHALLENGE: Egyptian fractions
    ⌨ (1:37:06) Lesson recap
    ⌨ (1:38:15) What is dynamic programming (also called DP)?
    ⌨ (1:41:55) What is the principle of optimality?
    ⌨ (1:42:20) The 3-step process to solving a problem with optimal substructure
    ⌨ (1:43:55) Introduction to “ugly numbers”
    ⌨ (1:47:19) CODING CHALLENGE: Ugly numbers
    ⌨ (1:51:41) Traveling salesman problem (TSP)
    ⌨ (1:55:49) CODING CHALLENGE: Traveling salesman problem
    ⌨ (1:59:52) Palindromic matrix paths
    ⌨ (2:03:11) CODING CHALLENGE: Palindromic matrix paths
    ⌨ (2:08:37) Lesson recap
    ⌨ (2:10:03) Course wrap up (and the importance of coding every day)

  • @CrazyFanaticMan
    @CrazyFanaticMan 2 роки тому +150

    Perfect, finally a Data Structures/Algorithm course not written in Java. Looking forward to this

  • @dariuszspiewak5624
    @dariuszspiewak5624 2 роки тому +7

    def is_palindrome(string):
    if string == string[::-1]:
    return True
    else:
    return False
    can (and in fact should) be written:
    def is_palindrome(string):
    return string == string[::-1]

  • @LoayAl-Said-j8p
    @LoayAl-Said-j8p 2 місяці тому +2

    Who else took hours and days to actually not just pasively watch a video but implement yourself and understand every single piece of code and algorithm?

    • @druidmonkey
      @druidmonkey 14 днів тому

      12 - 13 minute mark ... still can't wrap my head around it the way she explains it and the graphics are advancing way to fast. its the most important part and she's just speeding through it grrrr

  • @jimmytorres4181
    @jimmytorres4181 2 роки тому +133

    Let's procrastinate by watching this video

  • @kvelez
    @kvelez Рік тому +1

    Binary Search: 34:34
    def bisection_search(arr, target):
    start = 0
    end = len(arr) - 1
    while start < end:
    mid = (start - end) // 2
    if arr[mid] == target:
    return arr[mid]
    if arr[mid] < target:
    start +=1
    if arr[mid] > target:
    end -=1
    print(bisection_search([1,2,3,4,5,6,7,8],7))
    def bisection_search(arr, target, start=0, end=None):
    if end is None:
    end = len(arr) - 1

    if start target:
    return bisection_search(arr, target, start, mid-1)
    else:
    return -1
    print(bisection_search([1,2,3,4,5,6,7,8],7))
    BubbleSort and InsertionSort: 39:27
    def bubble(A):
    for i in range(len(A)):
    for j in range(len(A)-i-1):
    if A[j] > A[j+1]:
    A[j], A[j+1] = A[j+1], A[j]
    return A
    print(bubble([9,5,3,26,1]))
    def insertion(A):
    for j in range(1, len(A)):
    key = A[j]
    i = j-1
    while i >= 0 and A[i] > key:
    A[i+1] = A[i]
    i -= 1
    A[i+1] = key
    return A
    print(insertion([5,2,1,9,6,4]))

  • @JoeMama-zx1fx
    @JoeMama-zx1fx 2 роки тому +67

    pythontutor 13:03 is the website she uses to show each line execute if people are wondering.

  • @1luvtil276
    @1luvtil276 10 місяців тому +3

    Anyone else notice that the algorithm defined to find all permutations of a string fails for strings with duplicate letters? Condition has to be str[i - 1] >= str[i] vs str[i - 1] > str[i]

  • @omaanshkaushal3522
    @omaanshkaushal3522 2 роки тому +6

    I really just wanted this and there were outdated versions of similar courses on UA-cam and here it finally is

  • @kiravd5392
    @kiravd5392 2 роки тому +16

    Just what I need for my Data Structures class

  • @jonnycoddington1883
    @jonnycoddington1883 2 роки тому +12

    This is amazing, thank you so much! For anyone about to watch this, ignore the naysayers. Algorithms is one of the hardest topics to describe for beginners in CS but this course has really helped me get over that hurdle!

  • @MyrusEarthWalker
    @MyrusEarthWalker Рік тому

    I've never seen an education video that required me to go slower than 2x to understand where we are. That's a compliment! Succinct, you are.

  • @aot9339
    @aot9339 10 місяців тому

    This was a good overview that you've presented in a digestible manner. Now I'm ready to dive into one of the 600+ page books to go deeper into this subject. One big compliment is that you've done well in your self-teaching coding journey. It takes a lot of self-discipline and long-term thinking, both of which are extremely difficult to master. Kudos!

  • @wjwillis100
    @wjwillis100 2 роки тому +1

    In the binary search algorithm any integer gives an index eg the first number gives an index 0 so to does any number the that is < the first number in the square braces. Likewise any number > the last number, gives the same index as the last number.

  • @babsded
    @babsded 2 роки тому +3

    The binary_itr function gave me a bit of a headache until I noticed that the elements of the array( the arr list variable) must be sorted in an ascending manner for the code to work. Random, unsorted values in arr will give you a broken code with undesired results. A great video nonetheless!!!

    • @Knaller1429
      @Knaller1429 2 роки тому

      yeah me too, even with sorted values it does not work as intended if the target value is missing in the array

  • @pyth0477
    @pyth0477 2 роки тому

    # My code for this first algorithm
    def factorial_number(n):
    i = 1
    factorial = 1
    while n-i:
    calculo = n * i
    n -= 1
    factorial *= calculo
    return factorial
    In [1] factorial_number(5)
    Out [1] 120

  • @kvelez
    @kvelez Рік тому

    Factorial:
    def recursive_fact(n):
    if n < 2:
    return n
    return recursive_fact(n-1) * n
    print(recursive_fact(5))
    def iterative_fact(n):
    fact = 1
    for i in range(2, n+1):
    fact *= i
    return fact
    print(iterative_fact(5))

  • @Techpro99
    @Techpro99 2 роки тому +1

    I love to learn python programming language from this channel bcoz this channel is totally dedicated for everyone who want to learn code........ reall instructors here.come & learn coding.

  • @kvelez
    @kvelez Рік тому

    Permutation:
    import itertools
    for i in itertools.permutations("ABC"):
    print(str(i))
    def permutations(string, permute):
    if len(string) == 0:
    print(permute)
    for i in range(len(string)):
    letter = string[i]
    front = string[0:i]
    back = string[i+1:]
    together = front + back
    permutations(together, letter+permute)
    permutations("ABC", "")

  • @dariuszspiewak5624
    @dariuszspiewak5624 2 роки тому +3

    For the permutation bit (traveling salesman problem)... Would it not be easier to name the variables for what they actually are instead of using the generic i, j, k, s letters? A crucial part of writing code is making it as understandable as possible. Correct naming therefore makes a whole world of difference. Instead of explaining that k stands for, say, rows and s stands for, say, columns, it'd be much, much easier to name them 'row' and 'column,' respectively. Can't get much easier than that...

    • @RameshKumar-rt8xb
      @RameshKumar-rt8xb 2 роки тому +2

      I didn't learn algs before... But I can say this for sure that this is very fast paced, unclear explaination and unnecessary videocam in the tutorial.. I know many people liked this but for me this is very bad tutorial in terms of explanation. I think these people should get inspored from cs50 program. It's such cool that I even saw one of their video in this channel itself.

    • @kosmonautofficial296
      @kosmonautofficial296 Рік тому

      Yeah I thought the code was a bit unclear. After I read the Code Complete book I started to notice things like that more.

  • @kevinsmith7331
    @kevinsmith7331 2 роки тому +1

    I'm part way through - and enjoying the course. There is an error at 34minutes - a missing "return" in the def binaryrecur(...), line 9. I know I must be learning to have spotted that !

    • @wallride2wallride
      @wallride2wallride 2 роки тому

      yeah good catch, same functions, brackets missing in the (start + end - 1) // 2; as they wrote, is "1//2" executed first, that is 0

  • @joelrodriguez1232
    @joelrodriguez1232 Рік тому

    Wow, This is a very underrated course.

  • @PythonLearningChannel
    @PythonLearningChannel 2 роки тому +2

    Queue Joey from Friends, "How you doinnnnnn?" Only it's not to ONE person, but to alllll the viewers here!! Happy to see you! I hope everyone finds the video helpful and informative. Feel free to wander over to my YT channel some time and say "Hi!" I would love that! All my best to you lovely aspiring (or professional) programmers! Happy coding!! 🖥🤩

  • @theblackelephant
    @theblackelephant 2 роки тому +6

    Thanks a lot for this great course I have already watch it straight to end

  • @abxmb
    @abxmb Рік тому +2

    yikes. I'm just a beginner. No computer science. I've just finished the Inro to python video. this is not easy for me. chatgpt has been very helpful with clarification questions. Hang in there people out there like me

  • @wassimhaimoudi
    @wassimhaimoudi 12 днів тому

    Background music at 6:51? also you got yourself a new sub looking forward to future tutorials on your personal channel!

  • @mirshodoripov1035
    @mirshodoripov1035 2 роки тому +4

    This content is just Super as I expected.

  • @MuhammadJamil-ho6wl
    @MuhammadJamil-ho6wl 2 роки тому

    I'm not disappointing someone but many seniors and Great programmers said Python is not recommended with Algorithm.
    All is C C/++ java Is the best for DSA.
    Thanks.

  • @AutoMotiveNewsBrazil
    @AutoMotiveNewsBrazil 2 роки тому +2

    Python and Shell Codes are cool. I Just starting...

  • @honestpetvideos9307
    @honestpetvideos9307 2 роки тому +16

    I just love how she teach, i wish she could have taught about graph and trees..🥺

  • @camiloaranzazuchica1522
    @camiloaranzazuchica1522 2 роки тому +5

    Thanks for this great free content.
    Nothing like a fun teacher to smooth the learning

  • @sebastianrhodes
    @sebastianrhodes 2 роки тому +8

    She’s incredible. Thanks for such fantastic content.

  • @rafaelteles889
    @rafaelteles889 11 місяців тому

    I'm struggling hard with cs college. Thanks for the free content!

  • @iamman2391
    @iamman2391 2 роки тому +1

    does anyone else was reminded of Phoebe (FRIENDS) while staring at her or its just me :D , it is humorous to imagine taking lessons from Phoebe , I would love that though !!

  • @GoodCodeArabic
    @GoodCodeArabic 2 роки тому +8

    Thanks for this great content 👏

  • @Yeard491
    @Yeard491 2 роки тому

    tfw I have so many of these saved to watch later and I just need to come by the motivation to watch them

  • @AntarikshRajkonwar
    @AntarikshRajkonwar 2 роки тому +1

    Hi, please make more videos on C++ basics for Computer Engineering first year students.

  • @alexlu2
    @alexlu2 Рік тому +2

    The code for recursive binary search (33:11) has an error. We can either have the ' -1' on line 6 or line 20 but not on both lines.

  • @govarthenanrajadurai9817
    @govarthenanrajadurai9817 2 роки тому

    Any prerequisites I should have learned before taking this course?

  • @wallride2wallride
    @wallride2wallride 2 роки тому +4

    there's something wrong in 33:45 recursive binary search, if target is not in list it returns "Element is present at index None".
    also,. what's the point of having a `mid = start + end - 1 // 2` ? i feel brackets are missing otherwise we are just doing start + end - 0

    • @simobear14
      @simobear14 2 роки тому +2

      Yeah, (start+end)//2, and add a return to the recursive call on line 9 is how I got it to work.

    • @vfwveihvnwroi3614
      @vfwveihvnwroi3614 2 роки тому

      @@simobear14 true true, was having trouble with it also, havent found anyone pointing out this issue but you, everyone just skipped it xdd... and idk how they got that mistake, did they not run the code? or i think it works for specific set of numbers and target.

    • @cuiyoutian
      @cuiyoutian Рік тому +1

      @@vfwveihvnwroi3614 I am sure that's the reason why they didn't demonstrate that code.

  • @mohammedhamid5
    @mohammedhamid5 Рік тому +1

    I will have an entry level software engineering interview and I would like to know if these topics are enough to pass the interview questions? I need to learn them fast since I do not have much time.

  • @onwukarosariow1607
    @onwukarosariow1607 2 роки тому +2

    Thank you for such a video...next do cryptography please

  • @uzairmughal4976
    @uzairmughal4976 2 роки тому +2

    Great. I am signing up for this! Where should I submit the fee :)

  • @NexTrip342
    @NexTrip342 2 роки тому +1

    Love you from Nepal🇳🇵🇳🇵

  • @ГалибАзизов-к8ц
    @ГалибАзизов-к8ц 2 роки тому +1

    Hi. im a begginer python developer. Thanks for this video. But in 34 min in iterative binary search if i use elements (for example -2 or 24 or 26 you cod qive mistakes)

  • @saurabhkumarraina5859
    @saurabhkumarraina5859 2 роки тому +1

    She is amazing, doesn't even feel she is teaching one of the toughest course in CSE..

    • @lazzy5173
      @lazzy5173 Рік тому

      It's interesting though.

  • @itsrairamones
    @itsrairamones 2 роки тому +3

    Thanks a lot your explanation was really helping to understand python in different perspective

  • @damianphillips8266
    @damianphillips8266 Рік тому

    Clear and Concise !! Informative Video learned more than I did at my previous University where I had to leave !

  • @Tausifsh86
    @Tausifsh86 2 роки тому +2

    Thanks

    • @Tausifsh86
      @Tausifsh86 2 роки тому

      Your team is doing amazing job and this is the least I can do for your team.Kudos!!!

  • @mirshodoripov1035
    @mirshodoripov1035 2 роки тому

    I am really excited this course

  • @howarja
    @howarja 2 роки тому +3

    This is a beautifully made video! I you're a great teacher and so much fun! Thank you!

  • @Gabriel-xq6tn
    @Gabriel-xq6tn 10 місяців тому

    Algorithms in programming or python? Does the algorithm differ from one language to another ? Because I know the algorithm is a sequence of steps that led to a solution . It doesn't include syntax rules.

    • @collinscisiwu
      @collinscisiwu 7 місяців тому

      You're right. Python was included because the course was taught in python

  • @Hacking-NASSA-with-HTML
    @Hacking-NASSA-with-HTML 2 роки тому

    Thank you for your efforts, smart lady ❤👍

  • @justwiredme
    @justwiredme 2 роки тому

    Thank you I really enjoyed your video I had fun as well learn alot

  • @gavineshwar9619
    @gavineshwar9619 3 місяці тому

    At time 47:02 the line number 14 family. Head actually head is nkt present in the class how we are writing it

  • @happywednesday6741
    @happywednesday6741 2 роки тому +2

    Algorithms in python: import solution as sp print(sp.solver(problem)) #solvedproblem

  • @data_artist
    @data_artist 2 роки тому

    ❤️🥕 Thanks for the great tutorial.
    (오늘 불금은 이 영상과 함께 보내야지)

  • @charlesdtrader8825
    @charlesdtrader8825 2 роки тому

    Thanks so much FCC, I hope soonday you would provide DSA in C# too

  • @RAZREXE
    @RAZREXE 2 роки тому

    Very excited for this, can't wait to finish the whole video

  • @wallride2wallride
    @wallride2wallride 2 роки тому

    family.head = Node('Bob') such a risky statement for 2022 standards! :)

  • @okopyl
    @okopyl Рік тому

    "This gives us a range of 4 numbers".
    Why? That function can only give a range of n numbers, not 4.
    That function can only give 4 numbers if it's range(2, 6), not range(2, n + 1)

  • @luciana9135
    @luciana9135 2 роки тому +2

    Hi. I'm wondering what is the program you used in the video to show the 'step by step' execution of the code? Please let me know, I believe it's very practical and easy to follow what the code is doing. Thank you so much!

    • @stevearango6850
      @stevearango6850 2 роки тому +3

    • @JoeMama-zx1fx
      @JoeMama-zx1fx 2 роки тому

      pythontutor

    • @allthecommonsense
      @allthecommonsense 2 роки тому

      Looks to me like they are just using a white rectangle to cover the lines, and moving that white rectangle down 1 line at a time. Pretty low tech.

    • @liefwerk
      @liefwerk 2 роки тому +1

      It's called Python tutor - it's free and it looks like there's also a Javascript version!

  • @pragith
    @pragith 2 роки тому +1

    Thank you!

  • @dafyddthomas7299
    @dafyddthomas7299 2 роки тому +1

    Excellent boot camp video - very useful and helpful to me

  • @ApteraEV2024
    @ApteraEV2024 2 роки тому

    YOU'VE got a Friend in Me , Pal)) Thanks so much for Sharing this more simplification of coding FUNdaMentals 😀 🧠 ✌️

  • @eminkilicaslan8945
    @eminkilicaslan8945 Рік тому +1

    Thanks for all the effort putten in this video.

  • @pyth0477
    @pyth0477 2 роки тому

    I am definatelly excited for this class!

  • @hmkdbambaragama7432
    @hmkdbambaragama7432 Рік тому

    thank you

  • @nccamsc
    @nccamsc 2 роки тому +1

    The code you are showing is not Pythonic enough. You could have used the 'enumerate' function in a lot of the examples.

  • @gaugengotm2307
    @gaugengotm2307 2 роки тому

    I don't mind being "bossed" around, especially when the commands/ requests are entirely sensible.

  • @mrboyban
    @mrboyban 2 роки тому +2

    Terrific work! Women are great at explaining CS content. Many thanks!

    • @johnames6430
      @johnames6430 2 роки тому

      umm she's just reading off a screen

  • @sergiocanas383
    @sergiocanas383 2 роки тому +2

    Could've explained better. 7/10

  • @mahendranath2504
    @mahendranath2504 2 роки тому

    Thank you so much 👍👌🙌

  • @endypendy18206
    @endypendy18206 2 роки тому +1

    ANOTHER BANGAR!!!

  • @LeftyOnDrums
    @LeftyOnDrums Рік тому

    Using the same Python Tutor website for the premute function, I get over 600 steps when you have 156? It is the same code and same site.

  • @jorge1869
    @jorge1869 2 роки тому

    Love it!. Thanks

  • @fontomfrom
    @fontomfrom 2 роки тому

    Love it! The sound effects too😊!!!

  • @racecar7808
    @racecar7808 Рік тому

    One of the best, funny and interesting explanation, 100% 👍👍👍

  • @AIBeastCreations2
    @AIBeastCreations2 2 роки тому

    thanks you

  • @jonr6680
    @jonr6680 2 роки тому +3

    Top marks for effort, I can see the work that went into this vid, engaging trainer and good visuals.
    But the style is not for me I'm sorry to say. I tried to watch but just gave up due to the sound effects and offtopic rambling.
    Maybe kids these days need to be tricked into learning stuff that is 'boring', honestly if you think this is boring - go learn something else.
    The technical content is excellent afaik but I also got tired of the audio quality (echoey room, zero effort to control levels during post production).

  • @avulapatiswetha6074
    @avulapatiswetha6074 Місяць тому

    at 1:16:30 # Strassen's Algorithm using RECURSION has a error of calling the strassen_recur(x, y) inside the def function itself. Can someone clarify what has to be done for 7 products. Any hint would do. Thanks

  • @studyforyou6794
    @studyforyou6794 Рік тому

    Nice video

  • @smoothbeak
    @smoothbeak 2 роки тому

    Well uh that was rather stimulating :P

  • @a99986
    @a99986 3 місяці тому

    19:36

  • @wallride2wallride
    @wallride2wallride 2 роки тому

    at 38:04 they call the bubble sort "unstable", I am getting it right? This is wrong, since bubble sort is in fact not efficient but stable.
    I am sorry but english is not my first language

  • @jocelynmedina906
    @jocelynmedina906 2 роки тому

    Thanks but can we please use a mic next time to avoid the echoing and booming. This distracts the lecture.

  • @xrhstos1330
    @xrhstos1330 2 роки тому +7

    Am i the only one who thinks she talks too fast and explains too little?

    • @allthecommonsense
      @allthecommonsense 2 роки тому

      Garbage "course". You get what you pay for.

    • @xrhstos1330
      @xrhstos1330 2 роки тому +1

      @@allthecommonsense I don't agree with that logic, all videos are free in yt but there are many excellent courses.

    • @jkscout
      @jkscout 2 роки тому

      no, you're not

  • @0xTRellyx0
    @0xTRellyx0 2 роки тому +4

    What program is being used to view the code step by step?

  • @beingcheercool
    @beingcheercool 2 роки тому +1

    Love you sister 😊 your teaching is amazing 🤗

  • @mabd10
    @mabd10 6 місяців тому

    night 1 - 31:04

  • @user-yt4fv6gv5j
    @user-yt4fv6gv5j 2 роки тому +1

    would love more from her. she is too good😍😍😍

  • @Alvarolozanorodriguezkalel1948
    @Alvarolozanorodriguezkalel1948 2 роки тому

    por que no funciono en mi ensayo? use ide pycharm, luego el de visual studio. pero no corrió el programa de factorial. que paso?

  • @owenrogers6820
    @owenrogers6820 2 роки тому

    Please do a complete data structures and algorithms in Javascript and also live coding questions based on Javascript.

  • @calebuwagbale9123
    @calebuwagbale9123 2 роки тому +1

    I'm having trouble running the code on strassen_recur() in matrix multiplication, any help?

    • @avulapatiswetha6074
      @avulapatiswetha6074 Місяць тому

      even i am having some trouble. will have to lookup some resources

  • @josephceci6904
    @josephceci6904 8 місяців тому

    52:00

  • @I_hu85ghjo
    @I_hu85ghjo Рік тому +1

    38:19

  • @falentinodjoka6732
    @falentinodjoka6732 Рік тому

    Thanks a lot for this course 🥰

  • @anywho4264
    @anywho4264 2 роки тому

    Finally, FINALLY

  • @jansprlak110
    @jansprlak110 2 роки тому +1

    Beta tester od roku 2016 oceňujem,,

  • @mzgz4216
    @mzgz4216 2 роки тому

    You are awesome