Study Hacks Blog Decoding Patterns of Success

Mastering Linear Algebra in 10 Days: Astounding Experiments in Ultra-Learning

October 26th, 2012 · 80 comments

The MIT Challenge

My friend Scott Young recently finished an astounding feat: he completed all 33 courses in MIT’s fabled computer science curriculum, from Linear Algebra to Theory of Computation, in less than one year. More importantly, he did it all on his own, watching the lectures online and evaluating himself using the actual exams. (See Scott’s FAQ page for the details of how he ran this challenge.)

That works out to around 1 course every 1.5 weeks.

As you know, I’m convinced that the ability to master complicated information quickly is crucial for building a remarkable career (see my new book as well as here and here). So, naturally, I had to ask Scott to share his secrets with us. Fortunately, he agreed.

Below is a detailed guest post, written by Scott, that drills down to the exact techniques he used (including specific examples) to pull off his MIT Challenge.

Take it away Scott…

 

How I Tamed MIT’s Computer Science Curriculum, By Scott Young

I’ve always been excited by the prospect of learning faster. Being good at things matters. Expertise and mastery give you the career capital to earn more money and enjoy lifestyle perks. If being good is the goal, learning is how you get there.

Despite the advantages of learning faster, most people seem reluctant to learn how to learn. Maybe it’s because we don’t believe it’s possible, that learning speed is solely the domain of good genes or talent.

While there will always be people with unfair advantages, the research shows the method you use to learn matters a lot. Deeper levels of processing and spaced repetition can, in some cases, double your efficiency. Indeed the research in deliberate practice shows us that without the right method, learning can plateau forever.

Today I want to share the strategy I used to compress the ideas from a 4-year MIT computer science curriculum down to 12 months. This strategy was honed over 33 classes, figuring out what worked and what didn’t in the method for learning faster.

Why Cramming Doesn’t Work

Many student might scoff at the idea of learning a 4-year program in a quarter of the time. After all, couldn’t you just cram for every exam and pass without understanding anything?

Unfortunately this strategy doesn’t work. First, MITs exams rely heavily on problem solving, often with unseen problem types. Second, MIT courses are highly cumulative, even if you could sneak by one exam through memorization, the seventh class in a series would be impossible to follow.

Instead of memorizing, I had to find a way to speed up the process of understanding itself.

Can You Speed Up Understanding?

We’ve all had those, “Aha!” moments when we finally get an idea. The problem is most of us don’t have a systematic way of finding them. The typical process a student goes through in learning is to follow a lectures, read a book and, failing that, grind out practice questions or reread notes.

Without a system, understanding faster seems impossible. After all, the mental mechanisms for generating insights are completely hidden.

Worse, understanding is hardly an on/off switch. It’s like layers of an onion, from very superficial insights to the deep understandings that underpin scientific revolutions. Peeling that onion is often a poorly understood process.

The first step is to demystify the process. Getting insights to deepen your understanding largely amounts to two things:

  1. Making connections
  2. Debugging errors

Connections are important because they provide an access point for understanding an idea. I struggled with the Fourier transform until I realized it was turning pressure to pitch or radiation to color. Insights like these are often making connections between something you do understand and the material you don’t.

Debugging errors is also important because often you make mistakes because you’re missing knowledge or have an incorrect picture. A poor understanding is like a buggy software program. If you can debug yourself in an efficient way, you can greatly accelerate the learning process.

Doing these two things, forming accurate connections and debugging errors, is most of creating a deep understanding. Mechanical skill and memorized facts also help, but generally only when they sit upon the foundation of a solid intuition about the subject.

The Drilldown Method: A Strategy for Learning Faster

During the yearlong pursuit, I perfected a method for peeling those layers of deep understanding faster. I’ve since used it on topics in math, biology, physics, economics and engineering. With just a few modifications, it also works well for practical skills such as programming, design or languages.

Here’s the basic structure of the method:

  1. Coverage
  2. Practice
  3. Insight

I’ll explain each stage and how you can go through them as efficiently as possible, while giving detailed examples of how I used them in actual classes.

Stage One: Coverage

You can’t plan an attack if you don’t have a map of the terrain. Therefore the first step in learning anything deeply, is to get a general sense of what you need to learn.

For a class, this means watching lectures or reading textbooks. For self-learning it might mean reading several books on the topic and doing research.

A mistake students often make is believing this stage is the most important. In many ways this is the least efficient stage because the amount you can learn per unit of time invested is much lower. I often found it useful to speed up this part so that I would have more time to spend on the latter two steps.

If you’re watching video lectures, a great way to do this is to watch them at 1.5x or 2x the speed. This can be done easily by downloading the video and then using the speed-up feature on a player like VLC. I’d watch semester-long courses in two days, via this method.

If you’re reading a book, I would recommend against highlighting. This is processes the information at a low level of depth and is inefficient in the long run. A better method would be to take sparse notes while reading, or do a one-paragraph summary after you read each major section.

Here’s an example of notes I took while doing readings for a class in machine vision.

Stage Two: Practice

Practice problems are huge for boosting your understanding, but there are two main efficiency traps you can get caught in if you’re not careful.

#1 – Not Getting Immediate Feedback

The research is clear: if you want to learn, you need immediate feedback. The best way to do this is to go question-by-question with the solution key in hand. Once you’ve finished a question, check yourself against the provided solutions. Practice without feedback, or with delayed feedback, drastically hinders effectiveness.

#2 – Grinding Problems

Like the students who fall into the trap of believing that most learning occurs in the classroom, some students believe understanding is generated mostly from practice questions. While you can eventually build an understanding simply by grinding through practice, it’s slow and inefficient.

Practice problems should be used to highlight areas you need to develop a better intuition for. Then techniques like the Feynman technique, which I’ll discuss, handle that process much more efficiently.

Non-technical subjects, ones where you mostly need to understand concepts, not solve problems, can often get away with minimal practice problem work. In these subjects, you’re better off spending more time on the third phase, developing insight.

Stage Three: Insight

The goal of coverage and practice questions is to get you to a point where you know what you don’t understand. This isn’t as easy as it sounds. Often you can be mistaken into believing you understand something, but don’t, or you might not feel confident with a general subject, but not see specifically what is missing.

This next technique, which I call the Feynman technique is about narrowing down those gaps even further. Often when you can identify precisely what you don’t understand, that gives you the tools to fill the gap. It’s the large gaps in understanding which are hardest to fill.

The technique also has a dual purpose. Even when you do understand an idea, it provides you opportunities to create more connections, so you can drill down to a deeper understanding.

The Feynman Technique

I first got the idea from this method from the Nobel prize winning physicist, Richard Feynman. In his autobiography, he describes himself struggling with a hard research paper. His solution was to go meticulously through the supporting material until he understood everything that was required to understand the hard idea.

This technique works similarly. By digesting the big hairy idea you don’t understand into small chunks, and learning those chunks, you can eventually fill every gap that would otherwise prevent you from learning it.

For a video tutorial of this technique, watch this short video.

The technique is simple:

  1. Get a piece of paper
  2. Write at the top the idea or process you want to understand
  3. Explain the idea, as if you were teaching it to someone else

What’s crucial is that the third step will likely repeat some areas of the idea you already understand. However, eventually you’ll reach a stopping point where you can’t explain. That’s the precise gap in your understanding that you need to fill.

From that gap, you can research the answer from a textbook, teacher or online. Generally, once you’ve narrowly defined your misunderstanding it becomes much easier to find the precise answer.

I’ve used this technique hundreds of times, and I’ve found it can tackle a wide variety different learning situations. However, since each might be slightly different, it may seem hard to apply as a beginner, so I’ll try to walk through some different examples.

For Ideas You Don’t Get At All

The way I handle this is to go through the technique but have the textbook open to the chapter explaining that concept. Then I go through and meticulously copy both the author’s explanation, but also try to elaborate and clarify it for myself. This “guided” Feynman can be useful when trying to write anything on your own would be impossible.

Here’s an example I used for trying to understand photogrammetry.

For Procedures

You can also use the method to fully understand a process you need to use. Go through all the steps and explain not only what they do, but how they execute it. I would often go through proof techniques by carefully explaining all the steps. I also used it in understanding chemical equations or in organizing the stages of glycolysis in biology.

You can see this example I used when trying to figure out how to implement grid acceleration.

For Formulas

Formulas should be understood, not just memorized. So when you see a formula, but can’t understand how it works, try walking through each part with a Feynman.

Here’s an example I used for the Fourier analysis equation.

For Checking Your Memory

Feynmans also offer a way to self-test your knowledge of the big ideas for non-technical subjects. Being able to finish a Feynman on a topic without referencing the source material means you understand and can remember it.

Here’s one I did for an economics class, recalling the concept of predatory pricing.

Developing a Deeper Intuition

Combined with practice questions, the Feynman technique can peel those first few layers of understanding. But it can also drill deeper if you want to go from not just having an understanding, but to having a deep intuition.

Understanding an idea intuitively isn’t easy. Once again, getting to this point is often seen as a quasi-mystical process. But it doesn’t have to be. Most intuitions about an idea break down into one of the following types:

  1. Analogies – You understand an idea by correctly recognizing an important similarity between it and an easier-to-understand idea.
  2. Visualizations – Abstract ideas often become useful intuitions when we can form a mental picture of them. Even if the picture is just an incomplete representation of a larger, and more varied, idea.
  3. Simplifications – A famous scientist once said that if you couldn’t explain something to your grandmother, you don’t fully understand it. Simplification is the art of strengthening those connections between basic components and complex ideas.

You can use the Feynman technique as a way of encouraging these types of insights. Once you’ve gotten past a basic understanding of the idea, the next step is to go further and see if you can explain it using some combination of the three methods above.

The truth is plagiarism is okay too, and not every insight needs to be unique. Understanding complex numbers as being two dimensional is hardly original, but it allows a useful visualization. DNA replication working like a one-way zipper is not a perfect analogy, but so long as you understand where it overlaps, it becomes a useful one.

The Strategy to Learn Faster

Learning faster doesn’t need to be a trick to work well. It simply means recognizing what is actually going on when we reach a new level of insight and finding tools to help us reach those stages consistently.

In this article I described learning as being three stages: coverage, practice and insight. This gives the false impression that these three occur always in distinct phases and never overlap or repeat.

In truth you may find yourself going between them in a loop as you successfully peel down to deeper layers of understanding. The first time you read a chapter you may get only superficial insights, but after doing practice questions and building intuitions, you may go back and read for deeper understandings.

Applying the Drilldown Method for Non-Students

This process isn’t one you need to be a student to apply. It also works for learning complex skills or building expertise on a topic.

For skills like programming or design, most people follow the first two stages. They read a book teaching them the basics, then they practice with a project. You can extend that process however, and use the Feynman technique to better lock in and articulate the insights you create.

For expertise on a topic, the only difference is that, prior to doing coverage, you need to find a set of material to learn from. That could be research articles or several books on the topic. In either case, once you’ve defined the chunk of knowledge you want to master, you can drill down and learn it deeply.

To find out more about this, join Scott’s newsletter and you’ll get a free copy of his rapid learning ebook (and a set of detailed case studies of how other learners have used these techniques).

(Image by afagen.)

80 thoughts on “Mastering Linear Algebra in 10 Days: Astounding Experiments in Ultra-Learning

  1. Great article, Scott. I think I have always gravitated to this type of deep understanding my whole life, despite the fact that it really isn’t how we are taught to learn. I remember that we used memorization a *lot* when we were very young (for the alphabet, multiplication tables, etc.).

    My problem with memorization is that my memory of things that I memorize is just too tenuous. When I deeply understand it, then I remember it without effort. In fact, if I deeply understand it, it is hard for me to forget.

    I definitely will be working on trying to improve my methods for achieving deep understanding, so thanks for the advice.

  2. Rob says:

    This is such a great post. The key takeaway for me is to spend less time on lectures and more time on finding the gaps in my understanding, plugging those gaps, and then building an intuition for the concepts. If only teachers preached this study strategy. Most people, myself included, just watch the lecture, read the chapter, do a few problems and repeat until time is up. What results is partial knowledge of topics that eventually snowballs into higher education. I would love to hear about the mental/emotional challenges you bumped into when doing your year long course. When you felt like giving up, what strategies did you use to keep going?

  3. Chet Frame says:

    Great post. I did something similar in my youth, but I wasn’t scientific about it. I like the process that you have developed. Thank you.

  4. Victoria says:

    Great article as usual, Scott. I have tried some of these things in my earlier years at college and did great in all of my classes. Unfortunately, I’ve fallen down the path of learning through repetition again. Reading your learning advice once more motivates me to study like I used to :)

  5. Bobby says:

    Really great stuff! So for learning programming how broad do you start when fleshing out the subjects you need to learn? Do you start at say “Object Oriented Program” on one piece of paper and then branch out and see what pieces are missing, or do you start off a little more specific like “Java” and work from there?

  6. I am interested in the connection you made with Fourier Transform, can you please elaborate?
    >>Fourier transform until I realized it was turning pressure to pitch or radiation to color.

    Thanks

  7. Adarsh says:

    Thank you Scott. This was exactly what I needed at this moment of time.

  8. Brian Emery says:

    So, were I to apply this to, for example, a problem set in a graduate level linear algebra class, say this weekend, here’s what I’d do:

    1) Identify the reading material and go through it, briefly summarizing along the way
    2) Do some practice problems along the away, with solutions in hand, identify key sticking points
    3) Work on building insight into sticking points.Particularly by going through proofs and then reproducing them from scratch using quiz and recall.

    Only then working on the problem set, repeating above steps as needed?

    I’ll let you know how it goes.

  9. Jason says:

    My question, then, is what do you do when you don’t have solution sets? When I was in grad school (Mathematics – thinking about going back) there weren’t solution sets.

    So is that something that one should find first (problems that have solution sets)? Otherwise, how do you adjust the method to work with the lack of worked out solutions to follow?

  10. David Rosson says:

    in apprehension how like a god…

  11. Reid says:

    Scott, would you be willing to give an example where you have created an incomplete picture for your visualization? I am interested in applying this to computer science. I am digging into that now in my career and enjoying the mind logic and expansion.
    Great article. Thank you very much for sharing.
    -Reid

  12. Josh says:

    Cornell College in Mt. Vernon, Iowa teaches semester-long classes for 3 1/2 weeks (18 days). The students there are used to learning like this. Maybe not MIT, and maybe not in ten days, but it’s an entire college curriculum built around this learning style.

  13. Scott Young says:

    Jason,

    Without a solution key the second phase is just that much weaker. I’d say your best bet is to cover what you can in practice problems and spend more time on the third phase.

    Bobby,

    All those are way too broad. A better starting point would be “Visitor Pattern in Java” or “Multiple Inheritance as Seen From the Compiler”. Specificity is helpful because being too broad gives you the ability to avoid actual gaps in your knowledge.

    If you’re doing broad coverage and practice problems, then Feynmans should be lasers, honing in on the few ideas that are giving you trouble. Doing them for every idea is usually too time consuming.

    Reid,

    Not sure what you mean by incomplete picture? A simple picture for computer science could be a function as a pencil sharpener, with input (unsharpened pencils) output (sharpened pencils) and a hidden internal mechanism. A more advanced example might be viterbi decoding as seeing the codes as overlapping tiles of translucent glass, trying to guess the panel sizes by the thickness of transparency.

    -Scott

  14. Jamie says:

    How would this work for something non-academic, for example Chess? I would like to try it out but I don’t quite understand how.

  15. Snow Polar says:

    Talking about lecture videos. Was wondering if its better to just watch through all the videos of a module (at 1.4 to 2x speed) before writing my notes or to play 1 lecture video, pause and resume as necessary and write my notes. Before moving on to the next video.

  16. Reid says:

    Scott,

    Appreciate the question answer. That is a good example. I gained a fuller understanding for what you meant by number 2 visualization as I read your boot camp information. Just signed up last night. Enjoying using some of the concepts for my Spanish studies already. Thanks for answering the (unclear) question with a clear response.

    grateful for your work,
    Reid

  17. Jefferson James says:

    Jamie,

    For chess, think of all the positional strategies in the middle game. For example if both players castle on opposite sides of the board the game changes a lot from if both players castled on the same side. Or you might take an idea such as knights work better in closed positions and bishops are better in open positions, then you find games that illustrate certain advantages and group them together and maybe annotate them (proving your insight). Your practice would be applying this in your games and afterwards review the game and see if you could have applied what you learned better. If you are weak in a positional idea then pick up a book that annotates the games for you and go over things until you do have insight for why they made a certain move.

    Other parts of chess like opening and tactics are more mechanic in a way but positional understanding is one thing I know can improve using this method.

  18. George D says:

    I don’t get it. In the last year I’ve focused extensively on two new fields of learning, and this is pretty much what I do when self-learning; textbook coverage, practice questions, problem solving (difficult or poorly understood parts), attempts to link concepts and explain ideas.

    But instead of fast, I get slow and grinding. Like almost everyone else.

  19. Bibin says:

    Scott Good post even though many of us inherently follows the same learning techniques its nice to have a systematic look at how its more efficient. Thanks for sharing the excellent content.
    Bibin Thomas

  20. Adrian says:

    While I was in the Navy this was taught to me as: See it, Do it, Teach it. We covered a years worth of EMT training in 3 weeks, reviewing a chapter an hour from the EMT National Registry textbook. Near the end of the day we would break out into groups for hands on practice. The 4th week was a practical testing exercise where we had to explain to the proctor every step we were doing in order to not miss critical steps. For me, I realized the most important step was insight (teaching). I found that if I had gaps in my knowledge they were quickly exposed by others asking questions that hadn’t occurred to me.

  21. John says:

    Thanks for this. The striking thing is that it’s all so…simple. I’ve been wanting to revise my university courses to improve student understanding–and to dissuade those who merely memorize or cram just for the sake of earning points. Your post gives me some interesting ideas about how to revise my presentations. Thanks.

  22. Roshan says:

    Are there any studies on the idea of “forming connections” mentioned here? Just want to read more on the subject.

  23. Raj says:

    Thanks for the systematic overview.

    1) First, out of curiosity I’m interested in how many hours you spent towards the MIT challenge –was this all you did for the year? Or do you have a job etc. and this was just a part-time activity.

    2)I generally understand how this method is useful as a step-by-step guide for how to condense and understand INFORMATION presented in textbooks or college classes, but I would like to know if it’s at all applicable towards becoming good at something like an IMPORTANT SKILL.

    So for example, I’m a bit hard pressed to see how this method could be a applied to become more efficient at things like a) learning to play an instrument, like the guitar well b) becoming a good carpenter c) becoming a funnier stand-up comedian.
    I chose examples where I found it difficult to understand how your principles could be applied to things that just required a lot of hard/deliberate practice. The Feynman process seems completely irrelevant to playing a musical instrument (sure, maybe passing a written music theory test, but not actually speeding up your ability to play the instrument).
    Is your model just not applicable to skills, but rather more geared towards understanding?

    1. Ray Squitieri says:

      Raj,
      Applying Scott’s technique to learning a musical instrument means identifying the spots that cause problems, then identifying the problem exactly, then working on that little spot. I wish I had learned this technique when I studied piano in my youth; later I observed that the best of my fellow learners had done something just like this. Instead of playing a passage over and over, which is what I did–and generally making the same mistakes in the hard parts–they would narrow the problem down to the few spots giving them problems, often just a new measures, then correct those at a slow pace, by changing fingering, for example. Then they would increase the speed, but just for these few measures. Then they would move back a few measures, get into the hard measures, and test their new skill first at a slow speed. If that worked, they would repeat at a higher speed. And so on.
      So it’s the same idea: break down a piece that’s giving you problems into a few troublesome areas; work on each of those until you can play it smoothly.

  24. Great post full of very useful techniques.

    I was surprised by the suggestion to not highlight your text but after understanding your approach, it makes a lot of sense to not slow yourself down at that point.

    Michael

  25. Awesome post, and it really gets at authentic understanding, instead of the rote-memorization style of learning. Unfortunately, and especially with GE courses, rote-memorization is often pushed on us as the “correct way” to learn.

    The difficulty arises when you have a really wide survey course where, the tests you are reading are so generalized and shallow that you feel like a deep understanding would take much longer than a three-credit class’s time is worth. Any suggestions on taking on courses like the one I just described?

  26. Scott Young says:

    Roshan,

    Off-hand, I don’t have any to cite. I do remember some studies done of mindmapping showing that it could be a more effective technique for recalling information from notes, but that’s not quite what we’re doing here.

    Raj,

    Depends on what the skill is. For the skills you describe there isn’t much conscious understanding going on, so the method I described wouldn’t work. But consider being a good programmer or marketer–those are skills which depend a lot on having deeply mastered useful conceptual frameworks, which can be learned by this approach.

    Also, I did run a business, but it wasn’t full-time when doing the MIT Challenge. The challenge consumed most of my time.

    -Scott

  27. Estara Arrant says:

    I have been thinking about ways to learn Arabic efficiently (I’m going to need it for grad school). I’ve already used some of these methods in my past language learning escapades, but now having it broken down is incredibly helpful.
    That and Biblical Hebrew. Have to get that down too…

    You said this could be done with language but with slight modifications. What types of modifications did you have in mind?

    -Estara

  28. Jay says:

    Would this approach work for a discipline that is more fact-based? It seems that this approach is great for something like physics/mathematics, where concepts are first understood, and then “debugging” can be done with practice problems. What what about studying medicine, especially for those of us who have already learned the basic construct in medical school? I am a resident physician and have already learned the basic concepts/constructs of medicine in medical school, but am trying to figure out how to more efficiently learn what it takes to be an excellent doctor in my field. Just summarizing in broad swaths seems to miss detail acquisition, which is exactly what I am trying to gain. Many people in medicine just read and re-read text (textbooks, journal articles, etc.), but that method seems too passive and inefficient. I’m looking for a better way…any suggestions?

  29. Anonymous says:

    Was Scott working elsewhere or involved with another project while doing this, or did this project require full-time dedication to get done? Also, how many hours a day did Scott spend on this project?

    Thank you so much for sharing it.

  30. John Macgregor says:

    “Being good at things matters. Expertise and mastery give you the career capital to earn more money and enjoy lifestyle perks.”

    An interesting if unwitting insight into why the US is in the moral & financial mess it is in.

  31. Joe says:

    I shall try this technique in Applied Mathematics at see where it takes me!

  32. Matt U says:

    Great article Scott.

    The only thing I would add is building an easily accessible library of the materials you’ve covered.

    Whether its through OneNote, or a personal wiki (I like XWiki), nothing beats having a personal search engine with the materials/documentation you’ve created over time.

    For instance, I have starter scripts for all of my languages, so that when I’m coding, I don’t have to google-search how to correctly buffer an input in Java — instead I just quickly search my wiki and find the skeleton code I’ve created in advance.

  33. broseph says:

    This article is a joke, to not be completely trolling

    -Cal finds a person born with extreme talent
    -So called talented person learns a couple of tricks
    -Talented person uses experience from another Comp Sci master and his 170 IQ to solidify Cal’s thesis on more effecient learning.
    -Nowhere does he address that this is an extreme case, Cal is basically emulating Malcom Gladwell’s success as a writer by applying a case study as a whole thesis to make a mass-read easy to enjoy sensastionalist article

  34. Steve O says:

    Fantastic. I’ve been using MIT OCW and a couple other resources over the past year, and this helps immensely. I especially like the emphasis on how watching lectures should take least amount of time. Thanks!

  35. Pingback: ???? | ??????
  36. Pingback: ???? | ??????
  37. Vinícius says:

    I didn’t knew the name “Feynman”, but it is exactly what I do to study. I found that is more effective and fast (for me) understand chunks and then sum each part to another.

    Greetings from Brazil!

  38. Udit Dasgupta says:

    Hi Scott!
    All my student life i’ve had the idea that I should keep on improving my way of learning. All of my conclusions so far match with what you have said; and there were so many things that I still hadn’t discovered! This article is a real eye opener and I thank you for sharing it with the world. I’m definitely gonna use your methods from now on.

    Cheers!

  39. Misgana says:

    Very enlightening.I was such a good student once up on a time and all of a sudden all my study styles and confidence was gone away while I was in campus.It was such a difficult time which I still can’t perfectly understand what went wrong.Fortunately, I’m a fighter who is working to regain his title.Your post took me back to my past strong memory and I was able to feel the times where I was confident with my academia. Thank you very much.

  40. Zack says:

    Does this style of learning recommend going through the entirety of course lectures in a straight shot and then going back and doing practice problems/gaining insight over the entire subject? I’m about to try this fast paced learning experiment with MIT Linear Algebra open courseware and was wondering if Scott would recommend going unit by unit or just through the entire course at once?

  41. Ty says:

    Not sure if he really understood much from the Comp Sci curriculum…his website is unbelievably mediocre.

  42. harga ac says:

    very good..i think he understand much from the Comp Sci curriculum

  43. harga ac says:

    very good..i think he understand much from the Comp Science curriculum..this is very enlighting information

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>