Cracking Go 328
prostoalex writes "IEEE Spectrum looks at current trends in artificial technology to crack the ancient Chinese game of Go, which theoretically has 10^60 potential endings. Is conquering the game via exhaustive search of all possibilities possible? 'My gut feeling is that with some optimization a machine that can search a trillion positions per second would be enough to play Go at the very highest level. It would then be cheaper to build the machine out of FPGAs (field-programmable gate arrays) instead of the much more expensive and highly unwieldy full-custom chips. That way, university students could easily take on the challenge.'"
I don't care how good it is (Score:5, Funny)
Re:I don't care how good it is (Score:5, Informative)
Er, actually, Fujiwara no Sai is Heian era, not Edo.
Chris Mattern
Re:I don't care how good it is (Score:4, Funny)
Re:I don't care how good it is (Score:5, Funny)
Re:I don't care how good it is (Score:5, Funny)
would have had two levels of funny if you posted AC.
Re: (Score:3, Interesting)
A: All their liberties were removed.
Or the more serious corollary:
When all your liberties have been removed, only your life remains to be taken.
Or perhaps:
That is not dead which can eternal lie. And with strange aeons even dead stones become useful.
Go is like some heavy political commentary, with life lessons thrown in.
Sure it is possible to search 10^60 (Score:2)
Re:Sure it is possible to search 10^60 (Score:5, Funny)
Re: (Score:3, Insightful)
So while you, the parent, and the grandparent were trying to be funny, you were al
Re: (Score:3, Insightful)
Exhaustive? (Score:4, Insightful)
Re:Exhaustive? (Score:4, Interesting)
So you can brute force a victory on a game with 10^60 possible endings? Okay, then I'll invent a game with a much bigger space to search and a bigger decision tree. Then what?
You've found a way to weed out fruitless branches, so it collapses into a problem that requires only 10^12 flops to solve? And this method isn't in use yet? Submit it to a journal, and add it to the corpus of Go algorithms.
So what's the breakthrough here?
Re:Exhaustive? (Score:4, Insightful)
Chess playing became a much less interesting proposition when hardware became chunky enough that you could cache the first few moves from archives of known openings, brute-force search the next 12-15 moves, and store all endgames for the last 8 or so moves in a lookup table.
Re:Exhaustive? (Score:5, Informative)
The basic asnwer is that we can optimise doing something simple and replicate lots, far, far better than optimisiing something complex and replicating it a few times. Which if you think about it is the approach that the brain / evolution of the brain opts for.
The "brute-force" approach described is actually mid-way between a pure brute-force (exhaustive) search and a "smart" search using quite sophisticated techniques to prune the tree. The author talks about alpha-beta pruning, null-move generation and hypothesis testing. These techniques are still pure-search (brute force) techniques - ie you could apply them to any game tree, but their effects are similar to how a smart (tailored to the specific game) approach would work.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Just curious - a Blue
Re:Exhaustive? (Score:5, Insightful)
Not so. The exhastive search approach provides a testable benchmark for true AI to exceed before it can prove it is productive AI. The famous Chess 4.6 program demonstrated that a simple "technical" tree search program could perform better than selective "intelligent" algorithms that tried to prune the search tree aggresively. With Go, this strategy fails - but the "intelligent" pruning mechanism is still eluding everyone..
There is still a golden prize in game-search algorithms - solve this, and other problems in AI can be solved too..
Re:Exhaustive? (Score:5, Insightful)
It is not the pruning mechanism itself which is still eluding everyone, but rather the difficulty in formulating a sound evaluation function for use in the alpha-beta pruning [wikipedia.org] optimization of the brute force search. The game of Go [wikipedia.org] is interesting because it is often the case that a particular board configuration does not give much concrete information about its future potential. In other words, a seemingly disadvantageous board in the short run might actually lead to a better endgame than a seemingly more valuable board in the present. A small situation in one part of the board might effect the larger game in unexpected and interesting ways dozens of moves into the future. It is precisely this complexity which makes Go intriguing for players and difficult for computers.
Re:Exhaustive? (Score:4, Interesting)
...and is just awfully boring. The whole chess/go playing thing, as far as I am concerned, is a mean to get new intelligent solutions to decision making/inference/... problems.
A not so successful program that would actually incorporate traditional strategic concepts [wikipedia.org] would be an interesting solution. For example, if a program would actually be able to handle a concept like aji [wikipedia.org], roughly (latent) potential - now, that would be elegant, that would be interesting.
Read an article to this effect.... (Score:3, Insightful)
Re:Read an article to this effect.... (Score:5, Interesting)
Meanwhile, the exhaustive search is really the least interesting way you could possibly do it, and won't likely provide you with much insight on Go, or related matters. *yawn*
Exhaustive search may be boring, but it is also the only theoretically sound method. Aggressive forward pruning of game trees always has a danger factor (you might prune a move that looks bad at depth 5 but is actually a win at depth 10), and this danger is massively increased in games with large branching factors like Go. Basically you are greatly amplifying the horizon effect.
Methods such as Prob-Cut and Multi-Prob-Cut have proven useful in games with extremely high branching factors where the evaluation function has strong correlations between depths (games like Amazons, which has an initial branching factor of 2176, far larger than Go's 361). However there is always risk associated with statistical pruning methods.
Really, the only theoretically sound method of forward pruning is to define a specific evaluation function and then produce proofs that certain board configurations cannot cause an increase in the evaluation. But these proofs are hard or impossible to construct and often they only apply in positions which are already clearly bad.
In my opinion, it's not that computers are terribly bad at Go. It's that humans are unusually good at it. I am regularly whomped by my own Amazons-playing program and that program can't even look to ply 2 at the opening of the game. On the other hand, I destroy most of the simpler Go programs, even though I absolutely suck at Go.
Re:Exhaustive? (Score:5, Funny)
Unfortunately for him, he is working for Microsoft labs in China, and since 2008 is well known to be the projected year of linux on the desktop, Microsoft won't be around long enough to continue funding his project. Sigh.
Re: (Score:3, Insightful)
Re: (Score:2)
If it can be done at a reasonable time, exhaustive methods are actually hard to beat if they are done completely.
Keep in mind even though no human nor average computer today could come up with all the possible plays of Go in a reasonable amount of time, doesn't mean that it will be possible or isn't already possible given the appropriate hardware.
The thing is... If you know all possible moves in the game, you will know "the next best move
Because humans and computers are different (Score:2, Troll)
Well, when it comes to solving g
yay! (Score:5, Insightful)
First time I played online I had my ass handed to me by a precocious 12 year old. Ah well, the memories.
*Alot* more complex and tactical then Chess, believe it.
See the rules at: http://www.britgo.org/intro/booklet.pdf [britgo.org]
Play online here: http://www.pandanet.co.jp/English/ [pandanet.co.jp]
I recommend installing glGo and having a go vs. computer (on the easiest setting there is).
Enjoy, I do.
Re:yay! (Score:5, Insightful)
Would you say that "Diplomacy" is more or less tactical than "Axis and Allies?"
Game complexity (Score:5, Interesting)
So yes, the game-state complexity can be a very poor measure of actual complexity, but go still has a very strong claim to being the most complex common human game. (An extreme example of high game-state complexity but trivial actual complexity would be a large game of "Brussel Sprouts" [wikipedia.org].
On the Diplomacy/Axis and Allies comparison. The three games being compared are very different in nature (although they are all zero-sum.)
Go is two player, complete information, deterministic (as are chess, checkers, hex, naughts-and-crosses/tic-tac-toe) Such a game can, in theory, be completely analysed.
Diplomacy is multi-player, deterministic, incomplete information because moves are simultaneous. I'm not sure if or how this could be analysed.
Axis and Allies is (effectively) two player, probabilistic. It could (theoretically) be completely analysed as a very large dynamic programming problem. From a game-theoretical point of view, it resembles Yahtzee.
Re:Game complexity (Score:4, Interesting)
This argument is intuitively appealing, and imho it has a lot to say for it. However, it has one major shortcoming:
Define the game of 3-go to be playing 3 consecutive games of go; the winner of the 3-go match is the winner of the majority of the go games. If player A is 1 level better than player B at go, they will be more than one level better at 3-go, since their winning probability is up to 74% instead of 67%. So, by this definition 3-go is noticeably more complex than go. However, I can think of no meaningful way in which this is actually true.
Also, if you count steps from a human player who knows the rules and has played a couple games to a human expert, you get 40-50 ranks. But that human player is easily 30 ranks about the true "random but no suicides" computer player. It doesn't take much work to build a computer program 20 ranks stronger than the random player, but that is still a truly *awful* program.
In the early days of go programming, a very simple algorithm was defined. This is from memory, so it's probably wrong, but it went something like this. If you can capture an opponent's stone, capture a group chosen at random from the largest capturable groups. Failing this, if you have a group in atari that you can rescue from atari, rescue the largest such group. Failing this, if an opponent has a group with less than 4 liberties, play one of its liberties. Failing this, play a random legal move. This turned out to be remarkably potent against early programs, and will absolutely destroy a random player -- yet still lose to even the weakest of human players.
Re: (Score:3, Interesting)
True, but the richness of Go comes from the interplay of the moves permitted by an extremely SIMPLE set of moves. There are exactly 2 major rules and one minor rule in Go:
1. you take turns placing pieces.
2. pieces or groups of pieces "surrounded" by other pieces are captured.
3. the board state cannot be repeated in two successive moves.
From this simple specification emerges an amazingly beautiful game. There are particular structures and patterns which emerge with concrete properties, advantages and disad
Not Any Time Soon (Score:5, Informative)
Playing Go is more than just searching a lot of positions. The game is _very_ subtle. To even understand how a professional 9 dan player (i.e. the very highest ranked players) plays every move in a game, you really need to be at least a 7 dan or so -- anything less than that and the moves just won't make a lot of sense. I have the feeling that it will be at least a decade (but probably much longer) before computer opponents can beat professional players, and even longer than that until they can beat the very best human player.s
Re: (Score:2)
Re: (Score:2)
Sure it does. Both at the game and player levels. Where the confusion lies is that sports are not deterministic, IE, there are not 64 squares on a football field like there are on a chessboard. But there are most certainly mathematical models.
At the game level: Statistically, you can look at each of the players' statistics (not just hard stats but soft stats like life ev
Re: (Score:2)
Sure it does. A game of football is nothing more than a few quintillion molecules moving around.
Re: (Score:3, Interesting)
Re:Not Any Time Soon (Score:5, Interesting)
Re: (Score:3, Insightful)
Playing Go is more than just searching a lot of positions. The game is _very_ subtle.
This is provably incorrect. Searching a lot of positions gets you a solution to the game. The problem is that "a lot" is defined as 10^60, which though it looks like a nice, friendly number isn't even remotely manageable. To give you a sense, the current U.S. national debt is around 9 trillion dollars. That's on the order of 10^12. That's a huge number, but the number of go positions is 1,000,000, 000,000,000, 000,000,000, 000,000,000, 000,000,000, 000,000 times larger than that!
This is an incomprehensibly
Re: (Score:2)
Don't do that.
Re: (Score:2)
not quite (Score:2)
Re: (Score:2)
Re:Not Any Time Soon (Score:5, Interesting)
Re: (Score:2)
our best estimate on the total number of atoms in the observable universe: 10^81
Very true. (Score:3, Insightful)
Absolutely. Last weekend -- Thanksgiving here in Canada -- my family vacationed in Northern Ontario. We didn't bring a television, but somebody did bring a Go set. I set about teaching most of my family how to play it. But what's amazing to me is how long it takes to get an adequate grasp of the basic concepts. Life, death, influence, strength, weakness, playing in the corners and sides, even scoring is hard. I don't even have a good handle on the game, and I've been playing exten
Nice. (Score:5, Funny)
Sometimes I imagine Go as the essence of life, distilled into a binary adversarial form. Of course, I snap out of it when my neighbours explain I can't just take their cars because "they had no liberties" when I double-park.
Re: (Score:2)
why check everything (Score:2)
Multi objective algorithms are fearsomely hard creatures to get right, but when working they can do great things. Use one to train a neural network with temporal properties (bases current decisions on past input
Re: (Score:3, Interesting)
... What you do is design a nice directed heuristic, say, a multi objective algorithm, and train this to compute a reasonable set of possible moves from the current state. There is no need to describe an idea end state, just a decent ongoing performance requirement.
Let me just tell you that a stone displaced by a mere one position can lead to very, very sure loss. Besides heuristics are good when we have at better understanding of the mechanics. All top books and players about go talk about "harmony", "beauty", "balance" ... let's just fix what the bleep are we talking about and THEN teach it to a computer, shall we? The theory is more of meditation than a strategy guide.
Multi objective algorithms are fearsomely hard creatures to get right, but when working they can do great things. Use one to train a neural network with temporal properties (bases current decisions on past inputs at all positrons simultaneously), and you have a means to achieve a decent setup. It would take a long time to get right though.
Please give me sources for the things you mentioned, couldn't understand a thing. Go is a game
Re: (Score:2)
Or as I say, "If you want to do a brute force method, how about whole brain emulation?"
Re: (Score:2)
More commonly, though, you find that a game (assuming it's easy to extend the rules to allow play on arbitrarily large boards, which is true for Go but not chess) is either polynomial-time soluble ('bad' games, in some sense) or PSPACE-complete (Go, Hex, etc.. try Hex sometime, it's proven the first player has a winning strategy but even the first move in that strategy isn't known on
Re: (Score:3, Informative)
We also have yet to develop heuristics that even evaluate one position very well, especially during the opening or middle game. Machine learning is not a cure-all here: there's a combinatoric explosion that happens very quickly with this game which makes most of the techniques
Re: (Score:2)
NP problems usually do admit some kind of heuristic 'this is good' algorithm; it goes with approximate solutions (which you can often manage in poly-time). PSPACE-complete problems do not seem to admit either, in genera
Re: (Score:3, Informative)
Not any more than solving 128-bit cipher is a constant-time problem.
Using the Japanese rules Go has been proven to be EXPTIME-complete [wikipedia.org].
Re: (Score:3, Insightful)
By that logic any problem can be called "constant time" as long as you've chosen an actual problem to solve.
It's like that, although what I call a problem, you would likely call a class of problems, and what you would call a problem, I would call an instance of a problem. Using your terminology, it's useful to speak of the asymptotic complexity of a class of problems, but not of a single problem.
Just because you've fixed n to some value doesn't change the problem's complexity.
If I say that such-and-such a problem can be solved in O(n^2) time, then what I mean by that is that the number of computations required to solve this problem is less than some function of the form an^2 + bn + c for so
Good luck with positional evaluation (Score:5, Interesting)
Re: (Score:2)
Of course, it will take a very, very long time.
Artificial Intelligence? (Score:2)
"IEEE Spectrum looks at current trends in artificial technology to crack the ancient Chinese game of Go, which theoretically has 10^60 potential endings. Is conquering the game via exhaustive search of all possibilities possible?"
Even if it where possible to conquer the game via an exhaustive search of all possibilities, it would still be nowhere near Artificial Intelligence. Besides that, other board games-playing computer programs do not get their strength from an exhaustive search, but from a large database of previous games. In fact, even world champions of chess do not think ahead more than 5 or 6 turns.
Wake me up when they come up with a computer program that can beat all human Go players without an exhaustive search...
Re: (Score:2)
I don't know where you're getting this information, but you are dead wrong. To take chess as example, strong computers always have an opening book but that's only used during the opening of the game. As for the "5 or 6 turns" comment, that makes no sense at all. Even if by
And what is the point? (Score:2)
Plus, why is it so important to "crack" Go, anyway? These researchers have come up with a solution that is essentially a brute-force attack for each game position, requiring a supercomputer. We all know that supercomputers can do amazing things that require unfathomable amounts of calculations. It sounds like they know that this approach would work, too -- they just aren't sure that they can build a machine powerful enough to tackle the problem in a reasonable amount of time. So how does
Re: (Score:2)
On the other hand, it could tell us some things about the game of Go--is it a "fair" game, etc.
More to the point, why not? It's a challenge, design a program / hardware solution to beat Go. By your logic, why do anything?
Re: (Score:2)
Even if it where possible to conquer the game via an exhaustive search of all possibilities, it would still be nowhere near Artificial Intelligence.
Wow, I don't think you really have any idea of what "Artificial Intelligence" means. For that matter, why did you capitalize it--the study of artificial intelligence involves many areas from mathematics, to computer science, to biology, neuroscience, etc--it's not some mystical ... I don't know what, but whatever you seem to think it is!
You might be shocked, but, given the current state of things, a VERY large part of ai is exactly what you belittle--search questions.
You're also 100% WRONG about most other
Re: (Score:2)
I would also strongly disagree with your assertion that "even world champions of chess" don't think more than 5-6 ply ahead--I've seen guesses of several times that number.
There's no need to guess. Adriaan DeGroot http://www.chessbase.com/newsdetail.asp?newsid=3290 [chessbase.com] did scientific studies of it. In certain positions, masters would look ahead more than 10 moves (>20 ply). His book is fascinating reading, by the way.
In short, I basically agree with what you say.
Re: (Score:2)
Re: (Score:2)
Organizing the search space... (Score:5, Interesting)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Logical Extreme (Score:3, Interesting)
This is exactly the method that Spock would utilize while playing 3-D Chess, [speculist.com] and he would always win. However, due to his reputation for winning by always going to this logical extreme, noone ever would want to play with him.
In the end, it was deemed a highly illogical method, since it killed his ability to play the game.
Re: (Score:2)
WOPR always had the same problem, but for slightly different reasons.
FPGAs? (Score:2, Informative)
Re: (Score:2)
Re: (Score:2, Informative)
Not artificial intelligence (Score:5, Insightful)
The fact that we're talking about trillion move/second machines rather than even attempting to do it the way humans do it ought to tell us what the current trend in artificial intelligence is.
Basically, the current trend is the same as it was 20/30/50 years ago. This IS NO science of artificial intelligence. We don't have a freaking clue how intelligence works. I think we will someday, but it's going to take a fundamental breakthrough in theory. A "Principia Intelligentsia" (I'm probably mutilating the Latin) by some genius that throws out all the fumbling and finally Explains It All.
Mod parent INSIGHTFUL (Score:2)
Re: (Score:2)
How about YOU prove that *real* intelligence is anything more than fast computation.
Who said it wasn't? But what we do know is that a Go player doesn't search a trillion moves per second in his brain.
Re: (Score:3, Insightful)
I would be really interested in knowing how you think we know that. We know they aren't consciously considering a trillion moves per second. But how do we know what kind of work the cognitive engine is doing underneath the consciousness? What if your brain evaluates quadrillions of moves per second, leaving you aware of only the best few it can find?
Because the brain only has 100 billion neurons and, at best, can fire only a couple thousand times a second. If 1% of an entire brain was dedicated to being
Exhaustive Search is not realistic (Score:2, Insightful)
No.
A typical star is made up of ~10^57 hyrdogen atoms. If you could store an all the information you needed about a single ending position in a single atom, you'd need storage that had the mass of thousands of stars.
Re: (Score:2)
Storage isn't a problem, particularly... you can always throw away the results and recalculate every time. There, storage problem is gone :)
Run time, now, that's a problem...
Re: (Score:2)
At some intermediate position, you determine that you can force victory if you make a particular move. There is no need to ever consider any other move proceeding from that position.
Not brute force, Monte-Carlo !!! (Score:2, Insightful)
Still far from the best human players, but at least improving
Artificial Technology? (Score:2)
Is that in contrast to natural technology?
Re: (Score:2)
The irony is that Go does use natural technology - stone and wood.
More like an RTS (Score:2, Interesting)
Here we go again... (Score:2, Interesting)
It is, and never will be, a question of optimisation - no matter how stochastic, fuzzy, or hardware based. Chess was only "solved" in this way - it wasn't solved the way we actually play it.
Go... is all about pattern matching.
The tigers mouth, the ladder, the bamboo joint, the turn... that's how I play.
Just as the brain makes sense of our world. We make sense of go through the patterns we see.
And no - I don't mean just throw a ANN at it:-) And yet, something stirs in the heart of AI... Something wit
Re: (Score:3, Interesting)
no, we won't do it by brute force (Score:3, Interesting)
Lets assume we can design a go-specialized device that can outperform that by another 10^20th power (ridiculous, but let's imagine).
We build 10^9th such devices (a billion!), and wire them all together to play go.
It will still take 10^16th seconds (317,097,919 years) to figure out go.
So no, it won't happen that way.
Worse, I don't think go is that simple:
http://en.wikipedia.org/wiki/Go_complexity [wikipedia.org]
Checkers, Chess (Score:2)
You'd have to find a new universe to do something similar with Chess.
Just to physically store everything would be impossible. There are more possibilities in chess than there are atoms in the known universe.
And if GO has more possibilities than Chess, go find a another universe full of universes....and find a way to store things on a single atom.
Will Wright on Go (Score:2)
Go, at it's heart, is a game of cellular automata. From the simple local rules incredible complexity emerges. To date there have been a few academic papers that deal with creating cellular automata rules for playing, but with little success. Very strong local play, but lousy global play.
I think the trick to a successful Go playing program is to harness the local cellular automata knowledge in a higher order algorithm. Perhaps to use the
As a go developer (Score:3, Interesting)
genetic algorithms (Score:2)
Progress in Computer Go (Score:5, Informative)
Stretch vs. FPGA (Score:2)
I agree... no time soon.. (Score:5, Interesting)
Go is challenging to program for many reasons:
1) There is a ridiculous number of moves. As mentioned in the article.. there are 361 factorial moves as the game progresses. Many of these would never be done (a player would not move on the outer most edge of the board in the early stages). Some extra moves can happen as you kill groups and move new pieces into their positions. And of course.. both players pass well before the game is over.. so the board will never be filled up. So there are some limits on this huge number.. but whatever it turns out to be... it is crazy bigger than chess's possible moves.
2) The rule set is much less restricted. In chess... you are very restricted.. each of the 6 types of pieces have very specific rules. All except the knight is blocked by other pieces. In go.. you can move almost anywhere you want (it may not be the best idea but there are no rules about not moving to an empty spot). I say almost because you cannot actually kill you piece by placing it into a spot that would immediately kill it. These spots however are small in number to the number of spots you can move.
3) It is extremely difficult to decide the current state of the game with regards to one position being better than another. In the article he mentioned being able to shorten the move search tree by neglecting paths that led to worse positions. The earlier parts of the game are extremely difficult to decide. In fact.. there is probably no correct answer. This is probably one of this biggest issues with getting a computer to play effectively. There are probably spots that the computer with proper algorithms could deem as not so good.. but what about the 500,000 other positions that may turn out good.. may turn out bad. I think it would have a difficult choice when it has so many positions that it cannot grade as good or bad.
4) The delicate balance between whole board and small area (strategy vs. tactics). He mentions in the article that the computer could focus on a small subsection of the board at a time. This is fine and dandy when the computer can magically know which of the small subsections is vital. As a 19x19 game progresses (especially earlier in the game) there are for example 20 zones of the board that could become hot very fast. If one player takes initiative in a section.. they may only play 3-8 moves there and then jump to a completely different section of the board. These to positions (potentially) will collide.. and the way that the player built these two sections and the way they collide is very important.. this will greatly hinder the computer simply focusing on a subset on the board... that would be to focus on tactics.. and strategy and tactics are constantly balancing back and forth in the human players mind.
5) The human player makes new algorithms as they learn more about the game. One of the trickiest things about go is that there are no sets of rules that define a good move. There are "proverbs" which sometimes are philosophical about the game. Sometimes these are even contradictory. I doubt very much that people will find the golden set of algorithms that describe good play.. at least in a way that a modern computer interprets language.
In the end... I think one day we will have a computer that will be better than people at go. The only thing is.. I am very sure that it will be a very long time from now.. or after a breakthrough happens in AI. Anyone who has played the game for at least 20 games on a 19x19 will see the amazing explosion of possible moves. They will feel how sometimes there are 10 hotspots that you just wish you could move, but you only have one. They have felt what it feels like to be focused on an area of the board and suddenly, due to their opponents craftiness, jump to a whole different area of the board and suddenly.. that area becomes vital. A single move can make a relatively safe area dreadfully
True, and another observation... (Score:3, Interesting)
1. One of the key concepts of Go is "influence". Stones literally radiate influence. Different groupings of stones, in different regions of the board, and in opposition to other groupings, radiate differing amounts of influence. And in a Heisenberg-ish kind of way (at least during the early stages of a game) pushing too strongly for influence will create less space and pushing too strongly for
I wrote the first commercial Go program (Score:2)
I wrote a white paper a few years ago on how I would do 'real AI' and Go (PDF file: http://www.markwatson.com/opencontent/AI_Go_Consciousness.pdf [markwatson.com]). Really not much content, rather, I was just laying how I would go about it if someone funded me to work on AI Go for the rest of my life
Err... Math error. (Score:2)
SirWired
Re:What about this idea? (Score:4, Funny)
Heheh. Bewbiez.