add node queue; calculate group intersections; count unsolved cells
use arrays instead of doubly linked lists
add solve(); fix rememberRemove()