function debruijn() {
var MAXN= 1000000, T = new Array(), S="";
var u, v, x, N = 1, N0, i, arc = 0, rg = 0, t;
var n = document.f.l.value;
var alpha = document.f.a.value;
var p = alpha.length;
    document.f.t.value = "Waiting\n";
    for (i = 0; i < n; i++) N *= p;
    N0 = N/p;
    if (N > MAXN) {
       document.f.t.value = "Too large\n";
       return ;
    }
    for(i=0; i< N; i++) T[i] = 0;
    T[0] = 1;
    for(i=0;i<n;i++)
    S += alpha.substr(0,1);
    rg = n;
    while (rg < N) {
        u = (arc * p) % N;
          for (i = p-1; i >= 0; i--) {
              arc = u + i;
              if (T[arc] == 0) break;
          }
	if(i<0) {
document.f.t.value = "Sorry, for now the program is incomplete, no solution found!\n";
	  return;
	}
        T[arc] = 1;
        S += alpha.substr(i,1);
	rg++;
	if(rg%60==0) S += "\n";
    }
    document.f.t.value = S;
    return ;
}

