### B.2.3 Weaving collisions

This perfect weave is not possible in all cases. Let's look at another example:

@math{S=6}, @math{J=4}:

```0 *-----*-----*-----*
1     *-----*-----*-----*
2         *-----*-----*-----*
3             *-----*-----*-----*
4             ^   *-^---*-----*-----*
5             |   ^ | *-^---*-----*-----*
OUCH!   ^ |   ^
|     |
```

Here we have a collision. Some lines printed in later passes overprint lines printed by earlier passes. We can see why by considering which row number is printed by a given jet number @math{j} (numbered from 0) of a given pass, @math{p}:

```@math{row(p, j) = p*J + j*S}
```

Because @math{J=4} and @math{S=6} have a common factor of 2, jet 2 of pass 0 prints the same row as jet 0 of pass 3:

```@math{row(0, 2) = 0*4 + 2*6 = 12}
@math{row(3, 0) = 3*4 + 0*6 = 12}
```

In fact, with this particular weave pattern, jets 0 and 1 of pass @math{p+3} always overprint jets 2 and 3 of pass @math{p}. We'll represent overprinting rows by a `^' in our diagrams, and correct rows by `*':

@math{S=6} @math{J=4}:

```0 *-----*-----*-----*
1     *-----*-----*-----*
2         *-----*-----*-----*
3             ^-----^-----*-----*
4                 ^-----^-----*-----*
5                     ^-----^-----*-----*
```