I am trying to improve my problem solving skills. I am an engineer and I have a PhD in EE. All through, the only thing I have done is to solve problems. I am familiar with most of the things mentioned in Polya's book. I am interested in being able to solve the very hard problems that usually appear in the international Olympiads and Putnams. Consider a problem like "In the plane, n lines are given (n ≥ 3), no two of them parallel. Through every intersection of two lines there passes at least an additional line. Prove that all lines pass through one point." If you know that the heuristic to be used here is that of the solution to Sylverster's problem, then the answer to this is trivial. There is another interesting problem which is "We start with the state (a, b) where a, b are positive integers. To this initial state we apply the following algorithm: while a > 0, do if a < b then (a, b) ← (2a, b − a) else (a, b) ← (a − b, 2b). For which starting positions does the algorithm stop? In how many steps does it stop, if it stops? What can you tell about periods and tails? The same questions, when a, b are positive reals." Here, the heuristic is to look at the x in (x,y) mod(a+b) and to make deductions based on the fact that it is constant (= 2a mod(a+b)). My question is the following: Are there books training you to come up with heuristics to arrive at useful conjectures? In other words, is there a book which gives useful suggestions to enable students to come up with useful conjectures? Polya describes ways to do that but are truly elementary for me. TO solve problems at the level I have mentioned above, it must be possible to come up with heuristics or tricks using which, useful conjectures can be made. Is there a book for training students to come up with truly smart conjectures? I am familiar with Engel's book and Andreescu's book. They teach the tricks. THey do not talk about "conjecture making" and ways to train yourself to do that which is what I am mostly interested in. THat to not elementary conjectures but truly advanced ones. Conjecturing is the heart of solving problems. Please advise if you can think of other ways to train myself to be able to come up with smart conjectures. Also, please feel free to correct me if my question does not make sense.