This is great video! but, I feel the algo provided in the end is not the same as the way he was explaining.. I went ahead and wrote my code for it same way he explained: ``` class Solution: def sortArray(self, nums: List[int]) -> List[int]: def quicksort(nums, lo, hi): if lo < hi: partition_resting_point = partition(nums, lo, hi) quicksort(nums, lo, partition_resting_point - 1) quicksort(nums, partition_resting_point + 1, hi) def partition(nums, lo, hi): pivotIdx = random.randint(lo, hi) nums[pivotIdx], nums[hi] = nums[hi], nums[pivotIdx] pivot = nums[hi] l_idx = lo r_idx = hi-1 while l_idx
@MichaelSambol2 жыл бұрын
Yeah, in the early days I didn't spend enough time on pseudocode. Trying to fix that now by building out this repo: github.com/msambol/youtube/blob/master/sort/quick_sort.py. Thanks for the feedback!
@westsideslasha2 жыл бұрын
@@MichaelSambol I got really confused when the pseudocode didn't match the explanation. You should correct that (in the video) ASAP.
@MichaelSambol2 жыл бұрын
@@westsideslasha I'm sorry about that! KZbin won't let me change the video now unfortunately, but I pinned this comment.
@manavshah448 Жыл бұрын
I am encountering an infinite loop if I change the while condition to be i < j instead of
@amono770 Жыл бұрын
i am glad that i looked at the comment section after having a hard time connecting the pesudo code to the video content.
@EchoVids2u4 жыл бұрын
With every new quick sort video, I watch, I get more recursively confused.
@Iceron554 жыл бұрын
same lol all the quicksort videos use the same words to explain it
@अनिष्टदेव-श7य3 жыл бұрын
hey man, after pulling my hair out for 2 days I finally got it, sadly I had to pay for it.
@HACKINGMADEFUN3 жыл бұрын
@@अनिष्टदेव-श7य what did u pay for?
@अनिष्टदेव-श7य3 жыл бұрын
@@HACKINGMADEFUN a Udemy course
@HACKINGMADEFUN3 жыл бұрын
@@अनिष्टदेव-श7य cool
@jonahrivera74 жыл бұрын
Guy: "I think you understand the concept" Me: No I don't
@Evokans3 жыл бұрын
it gets halved and is recursively applied to both halves in each step
@sleevman3 жыл бұрын
@@Evokans um what?
@faith27563 жыл бұрын
@@sleevman It gets repeatedly done on each new half, as after each half the pivot is in the right place, so a new pivot is used.
@sleevman3 жыл бұрын
@@faith2756 sorry wat?
@faith27563 жыл бұрын
@@sleevman Which part exactly do you not understand?
@SAMURAIch4 жыл бұрын
I feel so dumb when i don't understand this, but then i just scroll the comment section and realise that im not alone lol
@liuqing19953 жыл бұрын
understanding the meaning of pivot is the KEY.
@reguret2976 Жыл бұрын
yeah, theitemfromleft, or right wasn't even properly discussed, left of what or right of what exactly?
@skyness95 ай бұрын
lol
@anshulsharma9424Ай бұрын
he is missing lot of steps , this video is a crime
@alanfender1235 жыл бұрын
i should be working at mcdonalds
@SkillUpMobileGaming4 жыл бұрын
You really should. *SAD!*
@IStMl4 жыл бұрын
@@SkillUpMobileGaming You too
@torment64254 жыл бұрын
wait what. why
@asailingstone4 жыл бұрын
lol 😂😂😂
@web-unlocked4 жыл бұрын
that's what I was thinking. you're a genius pal
@yufangjuan49943 жыл бұрын
To ones without enough background knowledge, this video omits details of execution of each step. But to ones with, this is concise and covers sufficient key points of quick sort. Thanks a lot for your video sharing.
@noahdirksen36232 жыл бұрын
Thats the fanciest wording I've heard, i would use: "You get it or you dont"
@Seanz2088 Жыл бұрын
Try to sort a few short sequences yourself according to the steps in the video. You may get the "background knowledge".
After you swap itemFromLeft and the pivot at the end, itemFromLeft is now at the end of the array. So, use that as the *new* pivot. Repeat that until its sorted.
@kennethquilantang80805 жыл бұрын
@@airex12 so 8 is the new pivot? How can I go through if there is no number in the array greater than 8?
@airex125 жыл бұрын
@@kennethquilantang8080 after 7 is put in its correct position, remember that all numbers to the right of 7 are greater than 7. In this case, there is only one number - 8. A partition with just one number is already sorted, so you can ignore it and move on to sort [6,5] to the left of 7. For sorting [6,5] choose 5 as the pivot. itemFromLeft is therefore 6, and itemFromRight has no value because no number in the array smaller than 5. Therefore, we can stop and swap itemFromLeft and the pivot to leave [5,6]. Yes, the video is unclear because it does not explain these cases. The point is that each time you put the pivot into it's correct position, you have "split" the array into two parts - one part has all numbers bigger than the pivot and the other part has all numbers smaller than the pivot. Parts with *just one* element are already sorted. If a part is already sorted, no itemFromLeft can be found. If a part is unsorted, you are guaranteed to find an itemFromLeft, and if the index of itemFromRight < the index of itemFromLeft *OR* itemFromRight does not exist then you can swap itemFromLeft and the pivot to put the pivot into its correct position in the whole array.
@kennethquilantang80805 жыл бұрын
@@airex12 I get your point bro thanks but what would be the next step. Will I need to pick another pivot? How can I sort the rest?
@Charoula16086 жыл бұрын
*screams in Ross voice* PIVOT! PIVOT! PIVOT!
@peizhiyan29165 жыл бұрын
haha, I can't help imaging Ross's face, hahaha
@Daver22125 жыл бұрын
Me in future, oh Ross's couch sort?
@Jiwoo155 жыл бұрын
screams in Chandler voice SHUT UP! SHUT UP! SHUT UP!
@mahnazha5 жыл бұрын
Oh my GOOOOD :-))))))))))))) So truuuuueeeeeee
@AbdelhameedG4 жыл бұрын
This is exactly what came into my mind learning about this :))
@theducksneezes49874 жыл бұрын
How to get Confused in 4 minutes then again, this was the best video about it so far
@4TH4RV4 жыл бұрын
I want more videos like this where they explain stuff in less than 10 minutes
@omegagmysta20924 жыл бұрын
Bet ? kzbin.info/www/bejne/kJmWaIuvhrF7odk
@JoelThomas-sr6ti5 ай бұрын
there's a video by abdul. i think it is best
@LL-rn8rn5 жыл бұрын
The psudocode is not intuitively reflecting the walkthrough
@diabl2master4 жыл бұрын
I've been looking at it for a few minutes now, and I can believe that this pseudocode is accurate, but I'd have to check the details of what the partition function is doing to be sure, but it seems legit. Assuming your language of choice will permit a self-referential function like that.
@jscholex4 жыл бұрын
@@diabl2master The recursion is fine... he's talking about how `partition` is putting the pivot on the left wall instead of the right. In the video the pivot is on the right side.
@diabl2master4 жыл бұрын
@@jscholex That would be a failure of technically reflecting, not intuitively reflecting, the walkthrough. I'm not sure OP was referring to that, but who knows.
@jscholex4 жыл бұрын
@@diabl2master Yeah who knows... but I think we can all agree the pseudocode isn't great hah
@skarfie1233 жыл бұрын
the pseudocode shows the Lomuto version but the visualisation is for the Hoare version, which is better. See Wikipedia for both.
@godaimer9992 жыл бұрын
explained it much fckin better in 4 minutes with 1.5x watchspeed than my teacher in a 90 minutes class, thank you sm
@wendyd.19183 жыл бұрын
I study computer science, and once, I had an exam with a few sort algorithms in it. I didn't really study but about twenty minutes before the exam I watched your 2-4 minute videos on these sort algorithms and I passed the exam. Thank you for helping me.
@fireboywatergirl16259 ай бұрын
thats gonna b me td lmao
@wendyd.19189 ай бұрын
@@fireboywatergirl1625 i am sure you are at the right place.
@sachinpathy69403 жыл бұрын
i put this at 1.5x and now i learnt quick sort 2.6667 minutes
@LGNNorotic4 жыл бұрын
you should put the code next to all of the visual aids and highlight each line as its being done in the visual. thanks for the help with sorting!
@fr52297 жыл бұрын
This is great. The simple explanation and the especially simple pseudocode towards the end makes it easy to understand the core concept of the algorithm.
@emilgebl86444 жыл бұрын
If anyone is confused at the 1:10, basically he doesn't go through the loop. Instead he jumps to when item from left is higher or item from right is smaller etc. There is a left and right pointer that checks for the condition and then left++ or right-- if its not correct. itemsfromRight goes from 1 cuz its smaller, and then the right-- checks 7, not smaller, right--, checks 8 not smaller, right-- and then it checks the 0 and see that its smaller.
@christianeichmueller86372 жыл бұрын
Thanks for the explanation!
@jamboy18432 жыл бұрын
what the hell are you talking about this is a church sir
@emilgebl86442 жыл бұрын
@@jamboy1843 I don't even remember making this comment.
@atmajoburman733524 күн бұрын
better and much easier algo than any standard quicksort algo available in the books
@Shivam25Verma2 жыл бұрын
Thank u very much Sir, I got it completely. Actually I'd missed my college online lecture b/c of sleeping... U saved me just night before exam, as urs is the shortest video on YT.
@yessirski78685 ай бұрын
people are complaining but this is gonna come in clutch for my wirtten exam tmr.
@snake32761203 жыл бұрын
LOL this is one of the best and easiest video out there on quick sort. All of you disliking it shouldn't do programming.
@nabe43207 жыл бұрын
am still confused
@ibu4335 жыл бұрын
N Betancourt cuz the way he explains it IS confusing I’ve watched this a couple of times, thought I understood went to the exam and screwed up Now that I’ve watched other videos I understand that the way he explains it is confusing
@thewiseowl88045 жыл бұрын
N Betancourt He made it more confusing, for sure.
@diabl2master4 жыл бұрын
He didn't explain what quick sort does in general, what it can be applied to, and left some holes in the explanation that someone with no experience would struggle to grasp. Which is a shame.
@omegagmysta20924 жыл бұрын
Hope this helps :kzbin.info/www/bejne/kJmWaIuvhrF7odk
@alvin_row3 жыл бұрын
i hope you got it cute bird from nichijou
@chinmayhattewar44563 жыл бұрын
Imagine newcomers watching this explanation for the first time.
@BethanyLowe87733 жыл бұрын
Thank you. I feel the same about my actual online course I'm studying. And I'm a newcomer. I feel better.
@krishnarajj93583 жыл бұрын
horrible
@prohakerofficial2 ай бұрын
Very good video, I learned quick sort easily thanks to this. Although, I did have to rewatch the "median-of-three" explanation.
@MewPurPur3 жыл бұрын
Yess I finally understood it, having a clear mind the morning before the exam helped
@brianmartinez61932 жыл бұрын
I watched several videos, including my school books, and I had no idea what they were saying with left to right and could not get the answers in the correct order because of that. I was able to understand after watching your video and it allowed me to get past my assignment. Thank you.
@HelloWorld-tn1tl3 жыл бұрын
This is the first video that made me really understand how to impl quicksort, and it's very short.
@devanshityagi82315 жыл бұрын
Wow... You just found a place in my mind where you stored quick sort so deeply.🙋💖😂
@mehdibadaoui16584 жыл бұрын
when i search for something on youtube and see one of your videos in the results i genuenly get excited
@ToriliaShine2 жыл бұрын
thank u so much, i have an exam tommorow and was stressing bc i couldnt figure out how quick sort work with my teacher's explanation and this just simplified it easily. tysm ;-;
@Kleyguy73 жыл бұрын
I think I'm here for the fourth time now.
@ganimatormusic Жыл бұрын
Thank you so much, i have a pc science test today, and i didn'T understand since i can't speak german that well and i am still learning it, this guy explained it all
@nemesis94105 жыл бұрын
This is the most confusing and incoherent visualization of quicksort I've ever seen
@thewiseowl88045 жыл бұрын
Well said 👍
@ChristianMay215 жыл бұрын
Makes perfect sense to me
@thewiseowl88044 жыл бұрын
Christian May That’s so great! 🙌👏
@diabl2master4 жыл бұрын
I thought the visualisation was fine. I feel that I understand it now.
@cristian-bull4 жыл бұрын
This is the fist visualisation of quick-sort I've ever seen, so I know it doesn't mean much, but I agree.
@dh72228 жыл бұрын
These are some clean tutorials. Thank you for making this!
@DT-ll8og2 жыл бұрын
Thanks for clear explanation. Correct Position for Pivot, let recursive do remains. Good job man.
@M15onehundred5 жыл бұрын
Nice! Glad to see magic still exists!
@DeusNudus4 жыл бұрын
Code is not right. "leftwall = leftwall + 1;" needs to happen right before "swap(array[i], array[leftwall]);" not after it.
@charleschoi59074 жыл бұрын
Agree!
@parthpatel-bt7qw6 жыл бұрын
This was exactly the kind of video I was looking for!! Short and concise, but no loss of information. Thank you.
@karaqore2 жыл бұрын
Hvala ti brate pomogao si mi puno u životu
@okaydayy4 жыл бұрын
That is the exact! same Quick Sort Algorithm we have been thought. Really good! Thanks
@smbowner6 ай бұрын
Hey, Thanks for the explanasion, It was a clear and concise video, however the pseudocode is somewhat wrong I believe in 3 things: In Partition, the order of operations is not correct: increment leftwall first, then swap. The final swap in Partition is not correctly swapping the pivot's original position with A[leftwall]. The recursive calls in Quicksort should be updated to exclude the pivot_location from the ranges, properly dividing the array into segments that exclude the sorted pivot. here is the corrected version: Quicksort(A as array, low as int, high as int) if (low < high) pivot_location = Partition(A, low, high) Quicksort(A, low, pivot_location - 1) Quicksort(A, pivot_location + 1, high) Partition(A as array, low as int, high as int) pivot = A[low] leftwall = low for i = low + 1 to high if (A[i] < pivot) then leftwall = leftwall + 1 swap(A[i], A[leftwall]) swap(A[low], A[leftwall]) return(leftwall) Thanks again!
@J4T3753 жыл бұрын
all your videos are short and very useful.
@noddycode73245 жыл бұрын
QuickSort has always been a bit of a mystery to me, but somehow this video instantly made it click. Thank you so much!
@ragavendhart5 жыл бұрын
I guess, In the quicksort explanation he moves the pivot to the RIGHT END of the array. In the pseudocode, he moves the pivot to the LEFT end of the array. And after the swapping is done, he then brings the pivot to the original position from the LEFTEND. I've seen too many quicksort algorithm videos and this works the best for all my cases.
@reytampubolon63902 жыл бұрын
currently studying for my Algorithms and Data Structure exam, your video is very helpful :) thanks
@VictorBanerjeeF4 жыл бұрын
Thanks Brother, You save my 10 min exam fast revision time
@akira_asahi2 жыл бұрын
Thank you for the video. I am grateful for your time and contribution. Kind regards, Akira.
@lil-mi-7772 жыл бұрын
The video hold the key of quicksort, most clear to me!
@seltonmc3 жыл бұрын
Your short videos helped me a looot. Thank you so much!
@user-fc5ou7pn2k2 жыл бұрын
amazing, ive got an exam tmrw... this lesson is much appriciated as my professor is not very good at explaining these basics
@Crzynoob5 жыл бұрын
Psuedo code does not match demonstrated algorithm.
@davidrichmond97596 жыл бұрын
These 4 minute videos are great for cramming!
@mirana76602 жыл бұрын
it's 8:48 AM, i have an exam at 15:30 PM and ur saving me here
@MoguMogu8187 ай бұрын
I was able to write quick sort in a day when I first learned it, and now I completely forgot and feel stupid. This is my major, how tf did I forget this algorithm.
@chetanphoenix3 жыл бұрын
I really like this explanation. This moves the pivot out of the way and swaps it back with the itemFromLeft pointer. That's so much easier than some other videos I've seen where the pivot is in the middle of the action and we're confused with >= or
@ggg-tq9be2 жыл бұрын
yes! It is cool!
@lemonw39064 жыл бұрын
The pseudocode is hard to read, but the variable name "leftwall" is really good, this gives me a vivid concept of how the leftmost larger item was swapped and the "wall" moved.
@hiteshsahu_2 жыл бұрын
pseudocode is actually wrong as well !
@blurryhorizon2 жыл бұрын
@@hiteshsahu_ Exactly, not only 1 pointer moves & stopping when this 1 pointer reaches end of the array, but also only picking leftmost value as pivot
@Kokil923412 жыл бұрын
@@hiteshsahu_ Exactly , i have wasted so much time over it
@scarlettwang21462 жыл бұрын
@@blurryhorizon I suppose that in the Partition function, the "pivot = A[low]" should actually be "pivot = A[high]"? Very confusing so I wrote it down and found out that the pseudocode doesn't work properly. // Oh just realised that although pivot = A[low] might works as well but the pseudocode is totally wrong for Partition function jeez..
@kemot25 Жыл бұрын
@@scarlettwang2146 I think it should be as it is. Something else is wrong.
@miso-ge1gz11 ай бұрын
i cannot even describe how much i hate learning these, thanks for the video it helps a lot
@senaszel4 жыл бұрын
Helped me. Great vid. Fan of your since now. Cheers.
@aterribleyoutuber90392 жыл бұрын
this is the best channel ever
@MichaelSambol2 жыл бұрын
thank you! please help spread the word :)
@arminkrahbar2 жыл бұрын
The visualization is perfect!
@SarveRadhaNaam Жыл бұрын
don't you think at 4:04 , in Partition code. leftwall++ should be before swap(A[i], A[leftwall])
@alanperaza56964 жыл бұрын
It was quick and I understood everything. Thanks a lot
@SuperJosba2 жыл бұрын
Perfect explanation of quick sort!!
@user-ev6er5vg6s2 жыл бұрын
There is an error in the pseudo code in the end: leftwall should be incremented before swaping
@sushan_karki5 жыл бұрын
watching this video from NEPAL. Great sir. THANK YOU.
@IOSALive5 ай бұрын
Michael Sambol, You're amazing! Let's be friends and have fun together!
@sayyedfarazmohseni34653 жыл бұрын
Best video so far
@mekabare7 ай бұрын
I'm seeing myself working customer service for the rest of my life
@MuggL4 ай бұрын
Your videos are busteling always, keep cooking!
@mitchross4002 Жыл бұрын
God bless you man this is by far the most straightforward and comprehensible explanation of quicksort, really got me out of a pickle with this one.
@MichaelSambol Жыл бұрын
God bless, Mitch
@SunsetsOverBatteryCity5 ай бұрын
Him: “quick sort = pivot” Me: “WHILE HE HID IN RADIO WE PIVOTED TO VIDEO 🗣️💥”
@Tracing00293 жыл бұрын
This will be useful for tomorrow's exam.
@jola_mir83273 жыл бұрын
Grate video! Just one thing. @ 1:53 itemFromLeft is 0 and itemFromRight is 5. This part confused me.
@jarencascino78624 жыл бұрын
This is exactly what I was looking for in a video
@Rglezy3 жыл бұрын
FINALY SOMEONE WITH CLEAR INSTRUCTIONS
@salmonsmoothie3 жыл бұрын
The pseudocode is not accurate. If the parameter `high` from Quicksort(A, low, high) is inclusive, then line 4 should be Quicksort(A, low, pivot_location - 1). Running this program as it is will cause an endless recursion where `low = 0` and `high = 1`, thus never reaching the base case (low < high).
@jeffchai65613 жыл бұрын
This algo is akin to a toddler randomly sorting numbers around until they're in order
@yahiashams23343 жыл бұрын
That without voice over made the video from great to perfect
@baribari600Ай бұрын
"let's let recursion handle the rest" > "here's the rest of the owl"
@arnodunstatter3 жыл бұрын
Your pseudo code does not represent the algorithm you explained in the video. Your psuedocode uses only 1 index to check the pivot against, as opposed to the 2 index method you described.
@haloum Жыл бұрын
this made it a lot more logical for me, thank you.
@jasmeet17mast3 жыл бұрын
I will let you watch without a voice-over! was helpful! thanks
@Jack-dx7qb4 жыл бұрын
Why the pseudocode doesn't intuitively reflect the walk through? (Quote from Wikipedia) "The pivot selection and partitioning steps can be done in several different ways; the choice of specific implementation schemes greatly affects the algorithm's performance." There are two partition schemes: 1. Lomuto partition scheme, which is the pseudocode provided in the video. 2. Hoare partition scheme, which is the walkthrough in the video. Comparison (Quote from Wikipedia) 1. "As the Lomuto partition scheme is more compact and easy to understand, it is frequently used in introductory material, although it is less efficient than Hoare's original scheme." 2. "Hoare's scheme is more efficient than Lomuto's partition scheme because it does three times fewer swaps on average, and it creates efficient partitions even when all values are equal." To understand the Lomuto partition scheme more, I recommend a KZbin video called "Quicksort: Partitioning an array" by KC Ang.
@ggg-tq9be2 жыл бұрын
thank you a lot!
@thuynh26083 жыл бұрын
I am glad I read the comment to know that I am not the only one!
@Agman3a2 жыл бұрын
Thank you so much! I was having so much trouble understanding this algorithm but you saved me in 4 minutes.
@srikarthickk97083 ай бұрын
I thought my dumbass couldn't understand it, then I read the comments and realised that I lack basic understanding and must work on quicksort properly. This video is just like last minute revision for us I guess. Btw, ur videos help me understand a lot better and make me code the algorithms myself after learning the concept except this one 😅
@MichaelSambol3 ай бұрын
it takes time! be sure to check out github.com/msambol/dsa too.
@srikarthickk97083 ай бұрын
@@MichaelSambol Sure. Thanks!
@Seanz2088 Жыл бұрын
Thanks for the concise and succinct tutorial.
@milenkopizdic92173 жыл бұрын
The thing is, at the beginning he says you swap item from left with item to right which obviously makes item from left higher index than item from right, but he does it again and only then he swaps with pivot?! It's impossible to see a pattern when there's no pattern in this explanation. EDIT: "StOp wHeN InDeX oF itemFromLeft > index of itemFromRight" but the first time he swapped it was higher index too so that's what I meant
@chetanphoenix3 жыл бұрын
You don't swap the indices. You just change the numbers in the indices
@Versole2 жыл бұрын
Out of all the sorting algrotiems this one the hard to understand but you understand it you'll understand it.
@walteramenya57596 жыл бұрын
here for the comments
@thehammurabichode79944 жыл бұрын
VERY UNIQUE TASTE 8|
@hassanakhtar78744 жыл бұрын
Wtf
@biggiechungus7842 жыл бұрын
Oh damn. When it's explained like this, it really makes sense. I could totally code this lmao
@dejanualex2 жыл бұрын
why u didn't pick the last element as pivot ? Instead of picking the middle one and then swaping with the last one ...
@joshuabrown6042 жыл бұрын
Thank you so much! Just understood how to do a quick sort in a few minutes. Fantastic Video! Keep up the great work 😀
@williamgreen9280 Жыл бұрын
Excellent explanation
@dannylones21593 жыл бұрын
saying "move pivot" but instead swapping it with last number 🗿👍🏻
@LR-ke5pw3 жыл бұрын
I actually understand a little bit now, thanks!
@nolanrudolph54635 жыл бұрын
I feel like the pseudo code would reflect the presentation a lot more if we let pivot be A[high] with rightwall=high-1. Then the conditional statement to initiate swap would be if(A[i]>pivot), and of course having rightwall=rightwall+1
@pebble22583 жыл бұрын
The comments on this video do not reflect the like/dislike ratio.
@campermortey7 жыл бұрын
I'm a little confused. In your very detailed, and helpful, explanation of itemFromLeft and itemFromRight it makes total sense. It is similar to the method Gayle uses in her QuickSort video to keep going and swap left and right having both points meet each other. Your implementation, however, seems to go a completely different route by using a for loop with only one pointer and swapping with a wall, similar to Harvard's CS50 class on QuickSort. Also, I found your code kinda confusing by swapping the values and not indexes. I had some problems running that code. My partition looks like this: public static int Parition(int[] array, int left, int right) { // Make starting pivot the last one for now int pivot = array[right]; int leftWall = left; // Go through array until index is reached for (int i = left; i < right; i++) { // If item at array[i] is less than or equal to pivot then switch with leftwall if(array[i]
@samimulaw5 жыл бұрын
i am confused too
@ragavendhart5 жыл бұрын
Gayle's video doesn't work for a few cases. This explanation is perfect and works like magic. Great job!
@icxonrus5 жыл бұрын
This video uses Lomuto partition scheme while Gayle uses Hoare. They are both valid, and Hoare is faster for some cases, see wiki for more info.
@Shay-mw1hh19 күн бұрын
I don't get it. What if the pivot has no greater than or less than itself? What numbers can it compare to?
@shakshi39357 ай бұрын
One night before the exam and here I'm totally baffled by this sort 🥴