void insert(String s) {
	int hash = s.hashCode();
	// System.out.printf( "hash: %s %d\n", s, hash );
	int n = 0;

	if (nE >= threshold) {
	    grow();
	}
	ninserts++;
	while (n < M) {

	    // int x = hash & (M-1);

	    // int x = (hash + ith(n)) & (M-1);
	    int x = index(hash, n);
	    // if( !ht[x] ) {
	    // ht[x] = true;
	    nihops++;
	    if (!ht.get(x)) {
		ht.set(x);
		strings[x] = s;
		// System.out.printf( "insert: %d\n", x );
		break;
	    }
	    // System.out.printf( "insert: collide: %d\n", x );
	    colProbe++;
	    n += 1;
	    // hash+=probe + PROBE;
	    // probe*=2;

	}
	nE++;
	if (n >= M) {
	    throw new RuntimeException("hash table full");
	}