for(Position p : hs) {
if (!p.isFirst()) continue;
for(Sequence s : p.owner().needs()) {
if (hs.contains(s.firstp())) continue;
HashSet<Position> h2 = new HashSet<Position>();
reachable(s.firstp(), h2);
for(Position p : hs) {
if (!p.isFirst()) continue;
for(Sequence s : p.owner().needs()) {
if (hs.contains(s.firstp())) continue;
HashSet<Position> h2 = new HashSet<Position>();
reachable(s.firstp(), h2);