iterative version

Signed-off-by: xbz <xbz.o3sig@gmail.com>