fast solution complete