So far the question is lame as a question. (Barak (bap@valaga.salk.edu) has pointed out.) Of course, we want to neglect the trivial answer, but I should give you more restriction for the question. If not, the answer could be arbitrarily given. The restriction is: The domain of the ilog function (thus {1,2,3,...,N}) must satisfy usual multiplication rule if the result does not exceed the maximum number N. For example, let us think the case N=4: The multiplication table must satisfy at least, 1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 2 x 1 = 2 3 x 1 = 3 4 x 1 = 4 2 x 2 = 4 Therefore the part of the multiplication table is predetermined in the question from the first as +---++---+---+---+---+ | X || 1 | 2 | 3 | 4 | +===++===+===+===+===+ | 1 || 1 | 2 | 3 | 4 | +---++---+---+---+---+ | 2 || 2 | 4 | * | * | +---++---+---+---+---+ | 3 || 3 | * | * | * | +---++---+---+---+---+ | 4 || 4 | * | * | * | +---++---+---+---+---+ Since 2 x 3 (or other cases expressed by "*") comes to larger than N(=4) under the conventional rule, the multiplication rule is determined by the demand of ilog() conditions. Therefore, the question is to give the part of "*" in the above table such that ilog() conditions (as follows) are satisfied. ilog(2 x 2) = ilog(2) + ilog(2). ilog(1 x 2) = ilog(1) + ilog(2). .... Obviously, there still are multiple answers (but not so many) in the above example. The question is whether or not we can always obtain multiple answers for the question in the arbitrary N.