class pra {
    constructor(n) {
        if(n) {
            if(typeof(n)!='number') return false;
            n = Math.round(n);
            if(n<1) return false;
        }
        this.a = new Array();
        if(n>1) this.ju(n-1);
    }
    ju(n) {
        if(typeof(n)!='number') return false;
        n = Math.round(n);
        if(n<1) return false;
        var i;
        for(i=0; i<n; i++) this.up();
    }
    up() {
        var n = this.n();
        var b = true;
        var l = this.a.length;
        if(l) {
            var i;
            for(i=0; i<l; i++) {
                this.a[i][1]++;
                if(this.a[i][1]==this.a[i][0]) {
                    this.a[i][1] = 0;
                    b = false;
                }
            }
        }
        if(b) {
            var a;
            a = new Array(3);
            a[0] = n+1;
            a[1] = 0;
            this.a.push(a);
        }
    }
    n() {
        var l = this.a.length;
        if(l) return this.a[l-1][0]+this.a[l-1][1];
        else  return 1;
    }
    i() {
        var l = this.a.length;
        if(l && this.a[l-1][1]==0) return l;
        else return null;
    }
    f() {
        var a = new Array();
        var l = this.a.length;
        if(l) {
            var n,i,e;
            n = this.n();
            for(i=0; i<l; i++) {
                if(this.a[i][1]==0) {
                    e = this.e(n,this.a[i][0]);
                    a.push([this.a[i][0],e]);
                }
            }
        }
        return a;
    }
    e(n,p) {
        if(typeof(n)!='number' || typeof(p)!='number') return false;
        n = Math.round(n);
        p = Math.round(p);
        if(n<2 || p<2) return false;
        var i = 0;
        while(true) {
            if(n%p==0) { i++; n /= p; } else break;
        }
        return i;
    }
    jd(n) {
        if(typeof(n)!='number') return false;
        n = Math.round(n);
        if(n<1) return false;
        if(n>=this.n()) return false;
        var i;
        for(i=n; i>0; i--) this.dn();
    }
    dn() {
        if(this.n()<2) return false;
        if(this.i()) this.a.pop();
        var l = this.a.length;
        if(l) {
            var i;
            for(i=l-1; i>=0; i--) {
                this.a[i][1]--;
                if(this.a[i][1]<0) this.a[i][1] += this.a[i][0];
            }
        }
    }
}
