Generation Algorithm