Wrong answer for physics

I’ve written the following solution to the problem PHYSICS (http://www.codechef.com/problems/PHYSICS), it passes the simple test case provided but on submitting its results in WA(wrong answer) for all test cases.

import numbers

T = input()

for t in xrange(T):

N, F = [int(i) for i in raw_input().split()]
heights = [(long(i), False) for i in raw_input().split()]

heights.sort()
heights.reverse()

ways = 0
for i, h in enumerate(heights):
    height = h[0]
    used = h[1]
    if used:
        continue
    j = 0
    while True:
        force = F ** j
        if force > height:
            break
        bounce = height / force
        if isinstance(bounce, numbers.Integral):
            try:
                if len(heights) > i:
                    index = heights.index((bounce, False), i + 1)
                    if index != i:
                        heights[index] = (bounce, True)
                        ways += 1
                        break
            except ValueError:
                pass
            finally:
                j += 1
print ways

This is what I’m doing in my solution :

  • for all the children in classroom
    heights list stores tuple(height,
    used) where height is the height of a
    child and boolean used indicates if
    child has been already used in
    forming a pair or not.
  • the while loop
    checks if there’s child whose height
    is equal to for all possible bounces
    Help me spot the cases where this
    solution can fail, and the fix.