Lecture 14: Depth-First Search (DFS), Topological Sort

Поділитися
Вставка
  • Опубліковано 23 січ 2025

КОМЕНТАРІ • 216

  • @MichaelBrashier
    @MichaelBrashier 8 років тому +213

    I didn't know DFS when I was 7 but I did know BFS subconsciously. I used it to get home after riding all over town on my bicycle all day.

    • @ervinzhou8251
      @ervinzhou8251 7 років тому +53

      DFS might be a bit more handy in your case lmao.

    • @Maen963
      @Maen963 4 роки тому

      😂😂😂

    • @zaramomadi5569
      @zaramomadi5569 4 роки тому +3

      I love this comment

    • @hkjpotato
      @hkjpotato 3 роки тому +3

      no how can u use bfs?u went to block a,then street 1, 2, 3 of block a, failed. Then you move to block b. Right?

  • @saifabu1744
    @saifabu1744 7 років тому +28

    Erik is one of my favorite professors of all time

  • @neuron8186
    @neuron8186 3 роки тому +53

    "when I was 7 years old I did DFS without even knowing it"and here i am 20 yo banging my head against wall to understand topic

    • @ronitaryan5402
      @ronitaryan5402 3 роки тому +1

      me too bro, me too

    • @perveenneha1423
      @perveenneha1423 3 роки тому +1

      God !!!!! you just spoke my mind........ even i am 20 and literally i am hell scared of all backtracking questions ......... infact i have skipped all of them ........ hell

  • @excalibour00
    @excalibour00 11 років тому +198

    Topological Sort: 42:00

    • @cloveramv
      @cloveramv 6 років тому +2

      Wow I was smiling in my mind when this happened - 26:36
      So much so for being a student of MIT.
      .
      .
      Sorry for bad english .

    • @mrodriguezglobe
      @mrodriguezglobe 4 роки тому

      thank you , you're the best

  • @sergeykholkhunov1888
    @sergeykholkhunov1888 3 роки тому +5

    02:05 depth-first search
    08:58 example
    14:11 running time
    18:03 edge classification
    30:40 cycle detection
    41:57 topological sort (job scheduling)

  • @mrodriguezglobe
    @mrodriguezglobe 3 роки тому +4

    DFS Time Complexity: 14:10
    Cycle Detection: 30:00
    Topological Sort: 42:00

  • @zaramomadi5569
    @zaramomadi5569 4 роки тому +6

    Erik Demaine is amazing. His lectures are so fun to watch and easy to follow. I love his older lectures too but mannn his more recent ones are pure gold.

  • @SanghoBose5
    @SanghoBose5 6 років тому +10

    This has to be one of the best lecture in the series.

  • @zulumopuku5370
    @zulumopuku5370 5 років тому +27

    These lectures are so easy to follow. Thanks alot MIT

  • @ronthomas8331
    @ronthomas8331 9 років тому +190

    when he was 7 years old he wrote a program to solve a maze using dfs, and that too without knowing it was dfs.WOW!!!.

    • @spandanhetfield
      @spandanhetfield 9 років тому +35

      +ron thomas He is the youngest prof in the history of MIT. He made a prof at around 20. Check out his wiki page :D

    • @ChrisLeeX
      @ChrisLeeX 9 років тому +8

      +Spandan Madan That is friggin awesome. He has a geeky charisma about him as well.

    • @abaybektursun
      @abaybektursun 9 років тому +1

      +Spandan Madan bruh

    • @jackll2149
      @jackll2149 8 років тому +8

      He should be like one of the guys in big bang theory. The only difference is he is a real person.

    • @hanssarpei5429
      @hanssarpei5429 8 років тому +1

      f

  • @siennahunter9043
    @siennahunter9043 5 років тому +426

    "when I was 7 years old I did DFS without even knowing it" weird flex but ok

    • @doom9603
      @doom9603 5 років тому +12

      flex is real xD

    • @rj-nj3uk
      @rj-nj3uk 5 років тому +75

      Yeah. I agree. But he is a prof at MIT and we are potatoes watching him teaching.

    • @BharCode09
      @BharCode09 5 років тому +18

      @@rj-nj3uk Well, I'm a tomato!

    • @bartekpa
      @bartekpa 4 роки тому +6

      3:54

    • @grantfaith
      @grantfaith 4 роки тому +3

      i lol'ed at his comment

  • @BikasKatwalK
    @BikasKatwalK 4 роки тому +6

    Cycle Detection: 30:00
    Topological sort: 42:00

  • @estebanlopez1701
    @estebanlopez1701 4 роки тому +8

    Oh Lord, one of the brightest minds at MIT is saying that doesn't have a good memory, that's the only part of the lecture I didn't understand

    • @crjacinro
      @crjacinro 4 роки тому +3

      he is a math genius. math doesn't need much memory. It needs intuition and logic.

  • @manishmberwani454
    @manishmberwani454 10 років тому +14

    Superb teacher...................Wish if all colleges students can see these videos and learn better!!!!

    • @JeewanthaBandara
      @JeewanthaBandara 9 років тому

      Manish M Berwani They can. :)

    • @manishmberwani454
      @manishmberwani454 9 років тому

      I have seen many colleges, where students never learn from internet!

  • @mohitnirwan9812
    @mohitnirwan9812 4 роки тому +5

    It'd be really cool, if people who attended this class like 10 year ago would come here to see this video :D

  • @ikaros9727
    @ikaros9727 4 роки тому +7

    This man is truly amazing. Would be kinda interesting to see the textbooks MIT uses

    • @nathanaelfarciert711
      @nathanaelfarciert711 4 роки тому +1

      Ikaros97 According to the course website, CLRS is the textbook for this course

    • @ikaros9727
      @ikaros9727 4 роки тому +3

      @@nathanaelfarciert711 Kinda funny because i use the same ^^ Its like everybody uses it but quite often its very mathematical and hard to understand

  • @dragon_warrior_
    @dragon_warrior_ 4 роки тому +4

    *IMDB Rating* : 10/10 for this whole 6006 series
    edit : + extra 100points for uploading the crispy notes

  • @HexagonalClosePacked
    @HexagonalClosePacked 5 років тому +12

    Erik: When I was 7 year old, one of the first computer program I wrote was for solving a maze.
    ....
    Me: When I was 7 years old, I fast and furious with my new bicycle and ended up with stitches...(that's as impressive as I can get for a 7 years old me)

  • @Victor-yn6jm
    @Victor-yn6jm 5 років тому +33

    I was playing with mud when I was 7 years old

  • @MikeChaseJr
    @MikeChaseJr 4 роки тому +3

    I wish I was bold enough to wear a pony tail, a t-shirt, and jeans to teach class lectures. I love this man.

  • @mindlessripoff22
    @mindlessripoff22 10 років тому +28

    damn bruh shouts out to young demaine killing the algorithm game since a young'n!

  • @lambo2712
    @lambo2712 3 роки тому

    7 years old im trying to learn to read my native language and this man already master computer language

  • @essamewaisha8746
    @essamewaisha8746 6 років тому +6

    Edge Classification 18:22

  • @gamingdork3681
    @gamingdork3681 4 роки тому +3

    Thank u for this amazing lecture my algo professors need to learn from u both way to teach and also get some knowledge as they are absolutely terrible.

  • @quidquopro1185
    @quidquopro1185 7 років тому +3

    03:55 Have been sitting scratching my head the whole semester over graphs and algorithms and he drops this bomb on me 1 week before my exam. Thank you for the confidence boost mate.............................................................. (jk he is awesome :) )

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

    Breadcrumb analogy was perfect

  • @nonsolomacintosh
    @nonsolomacintosh 6 років тому +11

    In the 2005 course there was Leiserson talking shit about python.
    Now: "this is python notation"

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

    36:06 - what is the difference between "where we start the search" and "the first vertex that is hit by the DFS?" thanks!

    • @zeronothinghere9334
      @zeronothinghere9334 4 роки тому

      You can start your search earlier, then go over v1 to vk, before you hit v1 again. That is meant with "the first vertex that is hit by the DFS", basically, the first time you do DFS on a node that has already been visited before by that same search.

  • @lockersrandom6161
    @lockersrandom6161 4 роки тому +1

    Thank You MIT.

  • @cesare-o7l
    @cesare-o7l 5 років тому +2

    Edit: he later corrected himself. Introduction to Algorithms (3rd edition) by T. Cormen says "We now show that forward and cross edges never occur in a depth-first search of an undirected graph". Then why did the professor say we have cross edges in an undirected graph?

  • @bogdantodasca2093
    @bogdantodasca2093 4 роки тому +1

    30:10 - after explaining tree / backward/forward edges - "So what?". Exactly what I was wondering

  • @jasonavina8135
    @jasonavina8135 3 роки тому

    This is a good lecture, but I think would be confusing for people that aren't already familiar with how a DFS works, which is simpler than it seems here. What I like about it is the how he shows the pseudocode for it and the reasoning behind that.

  • @souvikdas2759
    @souvikdas2759 6 років тому +2

    the difference between a avg teacher and a great one is how do you communicate when students mistake. For ex: what is the time complexity? some said 'V'. He said ' A little optimistic' !! WOW !!

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

      Most teachers are egomeniac as my observation of their characters; they enjoy tearing down students' confidence with out providing much comprehendable explanations(most of the times).
      The best teachers don't thems self that seriously and tend to build students knowledge base and confidence at the same time.

  • @dakotadanderson
    @dakotadanderson 5 років тому +1

    thank you from DePaul, MIT

  • @ShingHim
    @ShingHim 6 років тому +18

    Seems like the camera man is asleep half of the time but great lecture!

  • @mehmetatabal6923
    @mehmetatabal6923 4 роки тому +1

    No people, that's legit he did that in 7. This guy was one of the child prodigies and he is famous for it. He got his PhD at the age of 20. What really surprised me was he said I have a terrible memory which is something that I would think every genius like him would have.

  • @brandoncruz1208
    @brandoncruz1208 11 років тому +26

    Wish I knew DFS when I was seven...

    • @jdleanne
      @jdleanne 4 роки тому +6

      well i had my first c++ program written at age 25. Left that 10 yrs for other studies but still manage to work as a c++ developer during a postdoc fellowship. I don't think age matters but time management is a headache.

  • @TomerBenDavid
    @TomerBenDavid 5 років тому +1

    topological sort 42:00

  • @4blossoms
    @4blossoms 10 років тому +1

    Erik Demaine is hot! He makes any lecture 100 times more interesting!!

  • @saadabouzahir8696
    @saadabouzahir8696 8 років тому +2

    Parent dictionary has been declared in both function is it a global variable ? or the parent's function are different? because in DFS parents contain start vertex while in the seconde one it contains father of.. with only one source.

  • @ankursatya4733
    @ankursatya4733 7 років тому

    @ 28:35 why would we follow the edge from the 2nd node from ''S' back to 'S' in case of undirected graph?

  • @Augustinephillips
    @Augustinephillips 11 років тому +1

    I love Erik Demaine!

  • @isabellehu9231
    @isabellehu9231 3 роки тому

    28:13 but what if we don't follow that first edge? well then we follow the second one. using your logic, that first "tree" edge is actually a "back" edge! i think that these edges are just a by-product of dfs and not for generic graphs without using dfs, if that makes sense. cheers :D

  • @jimnewton4534
    @jimnewton4534 6 років тому +1

    Doesn't a discussion of topological sort need to include mention of a tie-breaker function, and a discussion of whether the tie breaker guarantees a unique order which obeys the constraints? It seems to me, naively, that the DFS approach is insufficient with certain tie-breaker functions. It is a bit strange that both the lecturer and also Cormen [Intro to Algorithms, Thomas Cormen et.al] ignore the question of a deterministic topological sort. My first encounter with topological sort with with the linerarization of class precedence lists in object systems which allow multiple inheritance. It is of utmost importance that the the class precedence list be deterministically ordered.

  • @thejassai8592
    @thejassai8592 7 років тому +3

    12:20 D is a parent to nothing,so it is'nt in the parent [ ].So how do we know that it's already been visited?

  • @arvindkumar531
    @arvindkumar531 5 років тому

    What the use of Visit(V, Adj s) at 13:36 ?

  • @w1d3r75
    @w1d3r75 4 роки тому

    Check the parent and if it not visited, traverse recursively

  • @linkon_
    @linkon_ 10 років тому

    in DFS node goes from A to B and A to C
    Doesn't make B and c siblings??
    When explaining types of edges @21:00
    If node d is traversed first then node b and then node e and then node g when you draw an edge between G and C how it make crossed egde??
    It should be backward and ..
    Cross edge should be like edge from F to itself.. ???

    • @Joshuaposada
      @Joshuaposada 9 років тому

      Linkon Manwani How does it go from A to C? if there was a line connecting them then it would be a cross edge and yes as sub tree they would be siblings.

  • @awesomefox4653
    @awesomefox4653 8 років тому +6

    14:12 DFS time complexity

  • @salexkorsan8790
    @salexkorsan8790 3 роки тому

    I need help,
    I want to sort in bash file,
    Example....
    a="10"
    b="100"
    C="1000"
    I want to sort this
    $a $b $c
    How to sort ?? Max value between this

  • @eightball8008
    @eightball8008 7 років тому +1

    8:30 in the parameters for DFS, are those commas between| V and Adj or are they little n's?

    • @macdondb
      @macdondb 4 роки тому

      Commas. He does kind of backwards commas

  • @sudhanshudey758
    @sudhanshudey758 3 роки тому +1

    In the graph shouldn't the arrow drawn on the edge be from B to D?

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

    Is it OK to use recursive DFS for topological sort in practice? Or should we use a iterative implementation to avoid possible stack overflows?

  • @dhruvjoshi8744
    @dhruvjoshi8744 5 років тому +2

    28:34 can anyone explain it?

    • @linliu3665
      @linliu3665 4 роки тому +1

      Don't forget he is doing DFS, in DFS of his version, it will always follow the edge as long as there is a possible way.

  • @MrSmokey247
    @MrSmokey247 4 роки тому

    Isn't determing back edges for right and left just a matter of perspective? I don't really understand how the two algorithms for left and right back edges differ..

  • @FantomX932
    @FantomX932 9 місяців тому

    Why does he uses paper? He does not keep in the head these ideas?

  • @yuf2316
    @yuf2316 6 років тому

    What if the first node you visit in DFS is some node in the middle and can never reach its parent? wouldn't its parent be set to none and never corrects?

  • @RudraSingh-pb5ls
    @RudraSingh-pb5ls 4 роки тому +1

    Hey I had a simple doubt, won't we visit every vertex twice in DFS algo, once in for loop of top layer part of DFS algo and once in DFS-visit part of the algo ?
    Is that what he explained us at 13:50 ?
    So can I say that runtime complexity will be O(2V + E) which is equivalent to O(V + E) because 2V is equivalent to V as both are linear !

    • @worthaglimpse
      @worthaglimpse 3 роки тому

      yessir we drop the 2 because 2v and v have the same asymptotic complexity

  • @PratikShende91
    @PratikShende91 11 років тому

    thanks for that,.......now m clear about the concept behind that...

  • @randy4443
    @randy4443 3 роки тому

    How would I choose the starting node?

  • @jimnewton4534
    @jimnewton4534 6 років тому

    To further beat a dead horse, the discussion of forward/cross/backward edges is a bit confusing, and not exactly well defined. Perhaps it is better defined in the text book the lecturer keeps referring to. For example, there is a looping edge from f to f. If you mark nodes in lineage list using the method explained in the lecture (via started-examining finished-examining advise), then the loop edge will point to a parent node (by that algorithm), and thus be a backward edge. Is this the intent?

  • @NytronX
    @NytronX 6 років тому

    14:18 - Rundown of DFS (Figure 22.4) on pg. 605

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

    14:53 "collaborative effort" LOL

  • @zulumopuku5370
    @zulumopuku5370 5 років тому +1

    He mentioned a book. what book is that ? @MIT openCourseWare

    • @mitocw
      @mitocw  5 років тому +1

      The textbook for the course is Cormen, Thomas, Charles Leiserson, Ronald Rivest, and Clifford Stein. Introduction to Algorithms. 3rd ed. MIT Press, 2009. ISBN: 9780262033848. See the course on MIT OpenCourseWare for more info and materials (lectures notes, exams with solutions, assignments with solutions) at ocw.mit.edu/6-006F11. Best wishes on your studies!

  • @capetaquebratudo
    @capetaquebratudo 6 років тому +1

    I didn't know you could be extremely clever and didactic at the same time. Congratulations.

  • @TothAndris91
    @TothAndris91 11 років тому +1

    Thank you so much, it was very easy to understand!

  • @LordMoopCow
    @LordMoopCow 5 років тому

    yeah but do you have a dfs on rs mate

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

    Does this lecture have DAGs?

  • @hbaduk
    @hbaduk 7 років тому +2

    where is lip gallagher

  • @aditheorigin4926
    @aditheorigin4926 9 років тому

    After visiting "a,b,c,d" how can we directly go to "c" (and mark as "s2"). What I didn't understand is how can we iterate throught next node in same level without having any implementation?

    • @rbhambriiit
      @rbhambriiit 9 років тому

      +Adi TheOrigin there is a list of graph vertices in V [a,b,c,...]
      once you are done with everything around a, your try b: since it is already seen , move to c (reached s2). This can be done via a for loop!

    • @borzoualipourfard4368
      @borzoualipourfard4368 8 років тому

      it was kind of random that the professor chose c to go to next. It is not guaranteed that the next node is always in the "same level"; the next node, s2, could have been any of the graph nodes. The for loop, "for s in V", and the order that you have placed the nodes in V decides what node you visit next.

  • @nanwu4430
    @nanwu4430 7 років тому +4

    The parent map has to be global or pass down to recursive calls. Otherwise, it won't work.

  • @bharathkotha
    @bharathkotha 8 років тому +1

    why do we need V as an argument in DFS-Visit method ?

    • @xinliangzhu6944
      @xinliangzhu6944 7 років тому

      It's the set of vertices.

    • @NiGhTzz2903
      @NiGhTzz2903 7 років тому +6

      In case someone else has the same question, he said at 5:18 that the V doesnt have to be there in the argument and the students can erase it.

  • @shanmukhchandrayama8508
    @shanmukhchandrayama8508 3 роки тому

    what is the text book followed?

  • @РоманБожко-ф6й
    @РоманБожко-ф6й 7 років тому

    Hello, everyone. I have a question about forward edge. The lecturer said that a forward edge is a node->descendant, but, imho it shouldn't be tree edge of the ancestor. So, if we write an edge from b to g - that one will be a forward. Am I right? Thanks for responses.

    • @aryangoyal5823
      @aryangoyal5823 4 роки тому +1

      descendant word applies only when node is a tree edge of that ancestor

  • @nanzibabasnin6861
    @nanzibabasnin6861 7 років тому +1

    which text does he follow , i wonder???

    • @karansaxena4422
      @karansaxena4422 7 років тому +1

      CLRS is the textbook for the course, you can easily find it online.

  • @md.dilshadulislam9113
    @md.dilshadulislam9113 5 років тому

    Humm my code was right as it was changing it's level and back level for each isolated components or for each non out degree vertices

  • @mohansinghrawat4324
    @mohansinghrawat4324 8 років тому

    i think text book u have is cormen lieserson

  • @Di5TuRBeD
    @Di5TuRBeD 10 років тому +1

    3:15 theoddone

  • @IQisTwenty
    @IQisTwenty 11 років тому +3

    that's Erik ma boy

    • @neuron8186
      @neuron8186 3 роки тому

      ayo my boi are you ok its been 7 years how life goin?

  • @sicktastic.videos
    @sicktastic.videos 2 роки тому

    Professor Erik Demaine solved DFS when he was 7.... Dang.

  • @ajeet.y
    @ajeet.y 10 років тому +1

    whats the criteria for MS in MIT for international students :)

    • @ashu7pathak
      @ashu7pathak 5 років тому

      Have you found it out in 5 years ?

    • @rj-nj3uk
      @rj-nj3uk 5 років тому

      Hello tell me what you found.

    • @dipsacedemy
      @dipsacedemy 3 роки тому

      Hey ajeet . I am pooja. Did you found anything in 7 years ?

  • @HienNguyenTechIO
    @HienNguyenTechIO 4 роки тому

    Thanks MIT

  • @samhitajoshi
    @samhitajoshi 4 роки тому +1

    When I was 7, I knew how to backtrack and how to write.

  • @joeyalfaro2323
    @joeyalfaro2323 3 роки тому

    God alone knows man's heart his thoughts we can only go by what we see or hear. Compation is rear commodity in world more rare gold.

  • @simplyajith1
    @simplyajith1 4 роки тому

    46:20. why ? who knows? , Let's prove it.

  • @deonthomas7811
    @deonthomas7811 10 років тому

    He keeps revering to the textbook, what is the title of the texbook and author

    • @mitocw
      @mitocw  10 років тому +13

      The textbook is Cormen, Thomas, Charles Leiserson, Ronald Rivest, and Clifford Stein. Introduction to Algorithms. 3rd ed. MIT Press, 2009. ISBN: 9780262033848. You can find more course information and materials (lecture notes, assignments, exams) on MIT OpenCourseWare: ocw.mit.edu/6-006F11

    • @brandomiranda6703
      @brandomiranda6703 8 років тому

      +Deon Thomas usually known as CLRS.

    • @deonthomas7811
      @deonthomas7811 8 років тому

      Great thanks ;-)

    • @spandanhetfield
      @spandanhetfield 8 років тому

      CLRS. Google it and you'll find the book

  • @VedhasDeshpande
    @VedhasDeshpande 9 років тому +1

    This guy is so cool! \m/

  • @이효건-o4o
    @이효건-o4o 3 роки тому +2

    haha i was doodling on the maze when i was 7 years old

  • @jossef12
    @jossef12 11 років тому

    Well explained!, Thanks.

  • @thinhnguyenvan7003
    @thinhnguyenvan7003 3 роки тому

    when I was 7 years old I did DFS without even knowing it" . Ok Its not too late for learning new things (Me at 29 and appease myself)

  • @panfayang
    @panfayang 11 років тому +4

    i want a cushion, too.....

  • @giaple6237
    @giaple6237 4 роки тому

    Explanations are a little bit convoluted, particularly the codes. I think this lecturer does not like but has to follow the textbook.

  • @mikey.audio.
    @mikey.audio. 2 роки тому

    I was never able to learn like this.
    How is it possible to take notes AND simultaneously learn a new complex topic?
    The time complexity of this teaching method is like O(n!).
    You literally have to wait until the professor reads his notes and writes it on the board before you can then read it and write it in your notebook, only to then have to read it again later because you were too busy taking notes to learn it.
    There's so much more I can say, but I'll leave it at that.
    I'm only here to remind myself of how useless lectures were for me. I learned by reading the textbook.

  • @sianmuanthangmilun6104
    @sianmuanthangmilun6104 8 років тому +26

    He knew a smattering of DFS when he was 7 years old. Morale: Not all precocious geeks end up like Mark Zuckerberg.

    • @ShakkIsLife
      @ShakkIsLife 7 років тому +31

      mark zuckerberg is a complete noob compared to erik

    • @dylancutler1978
      @dylancutler1978 6 років тому +14

      Zuckerberg was a psychology major who's considered a tech genius because he wrote an app that sold well. All it was at the time was a few hundred lines of PHP. Erik is on another level.

  • @JesseLH88
    @JesseLH88 4 роки тому +1

    I also played with trees at 7... real trees, like the wooden kind.

  • @abaybektursun
    @abaybektursun 9 років тому

    Thank you!

  • @ChadieRahimian
    @ChadieRahimian 8 років тому

    In the pseudo code of DFS it says "If s not in parent, do...", in his example, the vertex d never goes in the parent list, but while he is going through the graph and explaining the algorithm he skips over d and says "it has been visited". Shouldn't the algorithm be "if s in not in Adj[parent], do..."?

    • @borzoualipourfard4368
      @borzoualipourfard4368 8 років тому +1

      d was added to the parent list in the first full recursion with s1 = a; its parent was e, and d was added to the parent dictionary as parent[d] = e. Choosing the dictionary name as "Parent" was a little confusing as the keys of the dictionary are the child nodes and the values are the pointers to the parents; "if s not in parent" checks whether the parent pointer of "s" has been set or not. Parent pointer of d was set to e.

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

    We don't pay, but we get!

  • @pnachtwey
    @pnachtwey 6 років тому

    I like this instructor better than the other one but both always take too long stating the obvious.
    I would start by asking "why bother?" Where would you use a graph? Why would you use a depth first search over a breadth first search?
    What about cutoffs?

  • @mohansinghrawat4324
    @mohansinghrawat4324 8 років тому

    thankyou sir....