process(i) {
  while (true) {
    Local_section(i);
    Collecting[i] = 1;
    Number[i] = max()+1;
    Collecting[i] = 0;
    for(j = 1; j <= n; j++) {
      if (j != i) {
        while (Collecting[j]) {
          \\
	}
        while ((Number[j] != 0) &&
	       (Number[i] >= Number[j]) &&
	       ((Number[i] != Number[j]) ||
		(i >= j)) {
	  \\
        }
      }
    }
    Critical_section(i);
    Number[i] = 0;
  }
}

process(i) {
  while (true) {
    Local_section(i);
    Collecting[i] = 1;
    Number[i] = max()+1;
    Collecting[i] = 0;
    for(j = 1; j <= n; j++) {
      if (j != i) {
        while (Collecting[j]) {
          \\
	}
        while ((Number[j] != 0) &&
	       (Number[i] >= Number[j]) &&
	       ((Number[i] != Number[j]) ||
		(i >= j)) {
	  \\
        }
      }
    }
    Critical_section(i);
    Number[i] = 0;
  }
}

process(i) {
  while (true) {
    Local_section(i);
    Collecting[i] = 1;
    Number[i] = max()+1;
    Collecting[i] = 0;
    for(j = 1; j <= n; j++) {
      if (j != i) {
        while (Collecting[j]) {
          \\
	}
        while ((Number[j] != 0) &&
	       (Number[i] >= Number[j]) &&
	       ((Number[i] != Number[j]) ||
		(i >= j)) {
	  \\
        }
      }
    }
    Critical_section(i);
    Number[i] = 0;
  }
}


i  1   2   3 
Number 0 0 0
Collecting 0 0 0
j 0 0 0
max 0 0 0