Approximating Latin Square Extensions: 1 Motivation

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Approximating Latin Square Extensions

S. Ravi Kumar Alexander Russelly Ravi Sundaramz


Dept. of Computer Science Dept. of Mathematics Lab. for Computer Science
Cornell University M.I.T. M.I.T.
December 13, 1995

Abstract
In this paper, we consider the following question: what is the maximum number of entries
that can be added to a partially lled latin square? The decision version of this question is
known to be NP-complete. We present two approximation algorithms for the optimization
version of this question. We rst prove that the greedy algorithm achieves a factor of 1/3. We
then use insights derived from the linear relaxation of an integer program to obtain an algorithm
based on matchings that achieves a better performance guarantee of 1/2. These are the rst
known polynomial-time approximation algorithms for the latin square completion problem that
achieve non-trivial worst-case performance guarantees. Our motivation derives from applications
to the problems of lightpath assignment and switch con guration in wavelength routed multihop
optical networks.

1 Motivation
1.1 Optical Networks
Developments in ber-optic networking technology using wavelength division multiplexing (WDM)
have nally reached the point where it is being considered as the most promising candidate for
the next generation of wide-area backbone networks. These are highly exible networks capable of
supporting tens of thousands of users and capable of providing capacities on the order of gigabits-
per-second per user [4, 11, 17]. WDM optical networks utilize the large bandwidth available in
optical bers by partitioning it into several channels each at a di erent optical wavelength [1, 4,
14, 15].
The typical optical network consists of routing nodes interconnected by point-to-point ber-
optic links. Each link supports a certain number of wavelengths. The routing nodes are capable
of photonic switching, also known as dynamic wavelength routing which involves the setting up of
lightpaths [3, 5, 21]. A lightpath is an optical path between two nodes on a speci c wavelength.
 Supported by ONR Young Investigator Award N00014-93-1-0590. This work was done while the author was
visiting M.I.T. email: [email protected].
y Supported by an NSF Graduate Fellowship and grants NSF 92-12184, AFOSR F49620-92-J-0125, and DARPA
N00014-92-1799. email: [email protected].
z Supported by grants NSF 92-12184, AFOSR F49620-92-J-0125, and DARPA N00014-92-1799. email:
[email protected].

1
The optical switch at a node assigns the wavelengths from an incoming port to an outgoing port.
This assignment is changeable and can be controlled electronically.
Con ict-free wavelength routing in wide-area optical networks is achieved by utilizing latin
routers [2]. These are routing devices that employ the concept of a latin square (LS). A latin
router with n input ports, n output ports, and n wavelengths is associated with a partial latin
square (PLS), an n  n matrix that speci es the wavelength connections S from the n input ports to
the n output ports. The matrix contains elements from the set f0g f1; 2; : : : ; ng (0 is used as a
placeholder to denote emptiness) such that each row and each column never contains an element
from the set f1; 2; : : : ; ng more than once. (see Figure 1 for an example). A non-zero entry Lij
of L implies that the wavelength Lij is routed from input port i to output port j . A zero entry
denotes an unassigned entry. An LS is a PLS that has no zero entries.
0 0 4 3
2 4 0 1
3 1 0 4
4 3 1 2

Figure 1: A 4  4 PLS
Reducing the number of unassigned or zero entries in the PLS associated with a router is of the
utmost practical importance in optical networks as this ensures reduced wastage of the valuable
resources of ports and wavelengths. This motivates the following de nitions:
De nition 1 A PLS S1 is said to extend or be an extension of a PLS S2 if S1 can be obtained by
altering only zero entries of S2 .
De nition 2 A PLS is said to be completable if it can be extended to an LS.
See Figure 2 for an LS obtained by extending the PLS of Figure 1. Not all PLSs can be completed
(see Figure 3).
1 2 4 3
2 4 3 1
3 1 2 4
4 3 1 2

Figure 2: A 4  4 LS

De nition 3 Partial Latin Square Extension Problem (PLSE): Given a PLS S nd the largest
1
number of zero entries that can be changed to obtain a PLS S2 that is an extension of S1.
The PLSE problem as stated above is an optimization problem. The natural decision version of
the problem { namely, given a PLS establish whether it is completable { has been shown to be
NP-complete [6]. We present the rst known polynomial-time approximation algorithms for the
PLSE problem with nontrivial worst-case performance guarantees.
2
1.2 Other Applications
This study also has applications to the more classical areas of statistical designs and error-correcting
codes (which were in fact the original drivers of the research into LSs). We refer the interested
reader to the (extensive) literature that exists on the subject [7, 8].

2 Previous Work
The subject of LSs has been extensively developed by many eminent combinatorialists. Some of
the most famous conjectures concerning LSs were in fact proposed by no less than Euler himself.
Denes and Keedwell, [7, 8], provide comprehensive and encyclopedic collections of results on the
combinatorial aspects of LSs. Of special interest to us are results concerning the completion of
PLSs. The most famous conjecture in this area was the Evans conjecture [9] which was proved
after a period of over 20 years by Smetaniuk [19]. An excellent survey of the ongoing attempt to
characterize completable PLSs appears in [16].
The computational aspect of completing PLSs was initiated by Rosa [18] and Giles, Oyama
and Trotter [10]. The issue was nally resolved by Colbourn [6] who proved that the problem of
deciding whether a PLS is completable is NP-complete.
Barry and Humblet [2] were the rst to recognize the applicability of LSs to the problem of
wavelength assignment in optical networks. The question of approximating the PLSE problem
was considered at great length by Chen and Banerjee in [3]. They provide an algorithm and a
heuristic for approximating the PLSE problem. The algorithm, however, takes exponential time in
the worst case. And the heuristic in certain cases could modify the pre-existing entries in the PLS
thus rendering it un t for use in many situations of practical interest.
The rest of the paper is organized as follows: Section 3 contains notation and some basic
lemmas; Section 4 contains the factor 1=3 approximation algorithms; Section 5 contains the factor
1=2 approximation algorithms; Section 6 answers some natural questions regarding extensions of
certain PLSs; and Section 7 closes with a conjecture that we would be interested in seeing settled.

3 Preliminaries
3.1 De nitions and Notations
Let L be a PLS. If Li;j = 0, we say the cell (i; j ) is empty. Conversely, if Li;j 6= 0, we say the cell
(i; j ) is lled. Two PLSs L and M are said to be compatible if
 8i; j; Lij = 0 or Mij = 0, and
 L + M is a PLS.
When L and M are compatible LSs we shall denote L + M by L  M . For a PLS L, let jLj denote
the number of non-empty cells of L. We write L  M (L  M ) for two PLSs when M = L  A for
some (non-trivial) PLS A. This is equivalent to saying that L may be extended to M . We call L
blocked if 6 9L0  L. For PLS L, de ne L? to be a compatible LS such that jL? j is the largest over
all compatible LSs.
The problem of extending a PLS can also be viewed graph-theoretically as a coloring problem.
Associate with an n  n PLS L the colored graph with n2 vertices hi; j i; 1  i; j  n and edges
f(hi; j i; hi0; j 0i)ji = i0 or j = j 0g such that vertex hi; j i is assigned color Lij 6= 0; vertices corre-
sponding to zero entries of L are considered to be uncolored. The problem of PLS extension can

3
now be viewed equivalently as the problem of coloring additional vertices given the corresponding
partially colored graph. This motivates our use of the terminology color for the entries of a PLS.
3.2 Extending and Completing PLSs - some Combinatorial Lemmas
Colbourn's result, [6], showing that PLS-completability is NP-complete has e ectively put paid
to our hopes of discovering a polynomial time algorithm for recognizing completable PLSs. But it
remains an intriguing problem to understand what can be salvaged. We take a combinatorial step
in this direction by providing a quantitative characterization of minimally non-completable PLSs
and minimally non-extendable or blocked PLSs.
De nition 4 Let f (n) be the largest number such that every n  n PLS L with jLj  f (n) is
completable.
Lemma 1 f (n) = n 1:
Proof: The Evans conjecture, ([9]) made in 1960, states that any n  n PLS L with jLj  n 1 is
completable. It was nally settled in the armative by Smetaniuk ([19]) in 1981. This gives us that
f (n)  n 1. That f (n) < n is easily seen by the PLSs of Figure 3 which cannot be completed.
Hence f (n) = n 1. 

De nition 5 Let g(n) be the largest number such that every n  n PLS L with jLj  g(n) is
extendable.
Lemma 2 g(n) = d n2 e 1:
2

Proof: We rst show that g (n)  n22  d n22 e 1. Consider any n  n PLS L such that jLj < n22 .
Let ri (cj )be the set of non-zero entries in row i (column j ) of L. If we show that there exists an
i; j such that Lij = 0 and jrij + jcj j < n, then we are done because it implies that L can extended
by setting Lij to a value in f1; 2; : : : ; ng ri cj . It remains to show that there exists an i; j such
that Lij = 0 and jrij + jcj j < n. We do this by invoking the Cauchy-Schwartz inequality to show
that the expectation
E [n jrij + n jcj j : Lij = 0] = ( n2 1jLj )(Pi (n jrij)2 + Pj (n jcj j)2)
 ( n2 1jLj )( (n2 njLj)2 + (n2 njLj)2 )
= 2(n jLn j )
>n
It is easy to see that g (n) < d n22 e by considering the general versions of the examples in Figure
4.


4
1 2 : : : n-1 1
n 1
...
2

Figure 3: Blocked n  n LS with n entries


1 2
1 2
2 1
2 1
3 4 5
3 4
5 3 4
4 3
4 5 3
Figure 4: Blocked LS with d n22 e entries

4 Greedy Algorithms
4.1 A Greedy Algorithm Based on Linear Programming
The problem of maximally extending a PLS L may be expressed as an integer program:
X
max xijk subject to
ijk
X
8j; k xijk  1
Xi
8i; k xijk  1
j
X
8i; j xijk  1
k
8i; j; k such that Lij = k 6= 0; xijk = 1 (1)
8i; j; k; xijk 2 f0; 1g:
The association of a feasible point m with the PLS Mij = k () mijk = 1 is a natural correspon-
dence between those LSs which extend L and the feasible points of the integer program. A variable
which shares no constraint with any variable of (1) shall be called free.
Relaxing this integer program to a linear program yields a natural greedy algorithm:

5
Greedy (LP):

1. Set t := 0. Set A0ij = 0.


2. If L  At is blocked, return At . Otherwise let x be an optimal solution to the linear
program for L  At and (^i; ^j; k^) be so that x^i^j k^ is a maximum free variable. Set
(^ ^^
Aij = k t if (i; j ) = (i; j)
t+1
Aij otherwise.
Increment t and begin step 2 again.
If L is not blocked there exists a free variable so that step 2 may proceed. Furthermore, if xijk
is free, k is a consistent assignment to cell Lij so that each augmentation made by step 2 results in
a (larger) PLS L  At+1 .
Lemma 3 Let L be a PLS and t the number of iterations performed by Greedy (LP) on L. Then
t  ( 3 1 2 )jL? j.
n

Proof: For a PLS L, let L be the optimal value of the associated linear program. Notice that
during each iteration of the algorithm, at least one constraint containing a free variable is tight,
so that the x^i^j k^ selected has value at least 1=n. Examine iteration s of the algorithm. Let x be
an optimal solution to the linear program for L  As having value LAs and (^i; ^j ; ^k) the triple
selected in this iteration. De ne
8
>
> 1 if (i; j; k) = (^i; ^j; k^)
>
<0 if i 6= ^i and (j; k) = (^j ; ^k)
>
aijk = >0 if j 6= ^j and (i; k) = (^i; k^)
>
> 0 if k 6= k^ and (i; j ) = (^i; ^j )
>
:x otherwise.
ijk
Notice that a is a feasible solution to the linear program for L  As+1 with value at least LAs
(2 n2 ). Each iteration, then, depresses the objective function of the associated linear program by
at most (2 n2 ) whence
?
t  L j2Lj  jL 2j :
3+ n 3+ n

Recall that jAt j = t so that Greedy (LP) achieves a 3
1
2 approximation factor. This proves
n
the following theorem.
Theorem 4 Greedy (LP) is a 13 +
( n1 ) approximation algorithm.
4.2 The Naive Greedy Algorithm
Lemma 5 Let L be a PLS and A; B two PLSs, each compatible with L, so that L  B is blocked.
Then jB j  13 jAj.

6
Proof: For each pair (i; j ) with Bij 6= 0, let
Sij = f(i; j )g [ f(i; j 0) j Bij = Aij0 g [ f(i0; j ) j Bij = Ai0j g:
P
Then jSij j  3. If jAj > ij jSij j then there is a pair (u; v ), appearing in no Sij , so that Auv is
P (L  B )uv may be consistently set to Auv , contradicting that L  B is
non-empty. In this case,
blocked. Hence jAj  ij jSij j  3jB j. 
Consider the greedy algorithm de ned as follows:
Greedy:
1. Set t := 0. Set A0ij = 0.
2. If L  At is blocked, return At . Otherwise, select a pair (^i; ^j) with (L  At )^i^j = 0
and a color k^ so that (^ ^^
Aij = k t if (i; j ) = (i; j)
t+1
Aij otherwise.
is compatible with L. Increment t and begin step 2 again.
Since Greedy computes an extension Ak so that L  Ak is blocked, jAk j  31 jL? j. This proves
the following theorem.
Theorem 6 Greedy is a 31 -approximation algorithm.
The following example (Figure 5) demonstrates that our analysis of the performance of the
greedy algorithm is tight. This PLS can be lled to completion. However, an incorrect choice by
Greedy to ll 2 in (1; 1) blocks the LS.

3 4
3 4 1
4 1 2 3
3 4 1 1

Figure 5: Worst-case Scenario for the Naive Greedy Algorithm


The greedy algorithm can be implemented very eciently in practice. For each row i (column
j ), maintain an n-length bit vector Ri (Cj ) marking the empty cells in that row (column). The
greedy algorithm goes through each empty square (i; j ), picks a number to be lled (if possible)
using Ri ; Cj , and updates Ri ; Cj to re ect the change. This single operation takes O(n) time,
yielding an overall running time of O(n3).

5 Approximation Algorithms Based on Matching


5.1 A Linear Programming Based Algorithm Using Matching
We again consider the linear program associated with a PLS L.

7
Matching (LP):

1. Set A0ij = 0. Carry out the following for k 2 f1; : : : ; ng. Let x be a solution to the
linear program associated with LAk 1 . If 8i; jxijk = 0, de ne Ak = Ak 1 and move
on to the next k. Construct the weighted bipartite graph G = (U; V; E; w : E ! Q+)
with U = V = f1; : : : ; ng, E = f(u; v ) j xuvk 6= 0g, w(u; v ) = xuvk . Select a matching
M which maximizes jM j+kjGMkj kM k where jMPj is the cardinalityP of the matching, kM k

is the weight of the matching, and kGk = e2E w(e) = ij xijk is the total weight
of G. Since M is a matching, the variables associated with the edges of M are
independent (that is, none of these variables occur together in a constraint) and we
may de ne (
Aij = k k 1 if (i; j ) 2 M
k
Aij otherwise.
Furthermore, each edge of M corresponds to a non-zero variable so that L and Ak
are compatible.
2. Return Ak .
Notice that a matching optimizing the quantity jM j+kjGMkj kM k may be computed in polynomial
time by computing a maximum weight matching of each cardinality c 2 f1; : : : ; ng for which a
matching exists and selecting the optimum (see [20], for example). Hence the algorithm runs in
polynomial time.
We use the following lemma to analyze the algorithm:
Lemma 7 Let G = (U; V; E; w : E ! Q+) be a weighted bipartite graph with 8u; Pv w(u; v)  1.
Then for any maximum cardinality matching M , jM j  kGk. Hence maxM jM j+kjGMkj kM k  21 .
Proof: To begin with, we show that for any maximum matching M in G, there is a subset of
vertices W such that:
(i) W covers each edge in E , and
(ii) each edge in M is covered by exactly one vertex in W .
It is easy to see that picking either of the vertices of every edge in M always satis es the second
requirement trivially. Suppose the rst requirement is not met. In other words, an edge (u0 ; v1) 2= M
is not covered by any vertex in the current W . By maximality of M , there is some (u1 ; v1) 2 M
such that u1 2 W , by condition (ii). Now, let W = W nfu1g [ fv1 g. If the rst condition is met,
we are done. Otherwise, it implies there is an edge (u1 ; v2) 2= M such that it is not covered by
the current W . We repeat the same process now. It is clear that we cannot go inde nitely. When
we terminate, we see that (u0; v1); (v1; u1); : : : ; (uk 1; vk ) is an augmenting path, contradicting the
maximality of M . P
Since for any vertex u, v w(u; v )  1, the above shows that jM j  kGk. 
We now consider the e ect that stage t of the above algorithm has had on the optimal solution
to the linear program. Let LAt 1 be the optimal value of the linear program associated with

8
L  At 1 and x a vector achieving this optimal value. Consider the vector
8
>
> 1 if k = t and (i; j ) 2 M
>
<0 if k = t and (i; j ) 62 M
aijk = >
> 0 6 t and (i; j ) 2 M
if k =
>
:xijk otherwise.


a is a feasible solution to the linear program associated with L  At and


X
aijk  LAt 1 kGk + kM k:
ijk
Hence LAt  LAt 1 kGk + kM k. In this case we have set jM j variables and depressed the
optimum value of the linear program by at most kGk kM k. From the above lemma jM j+kjGMkj kM k >
1
2
, so that the above algorithm is a 12 -approximation algorithm.
5.2 A Combinatorial Algorithm Using Matching
Consider a PLS L and de ne Lt = f(i; j ) j 8sLis 6= k; 8sLsj 6= kg to be the collection of cells which
will admit a t. Consider the following algorithm:
Matching:
1. Set A0ij = 0.
2. For each k 2 f1; : : : ; ng, consider the bipartite graph G = (U; V; E ) with U = V =
f1; : : : ; ng and E = Lk . Let M be maximum matching in G. Set
(
Aij = k k 1 if (i; j ) 2 M
k
Aij otherwise.
3. Return An .
Consider stage k of the above algorithm. De ne
8
>
< 0 if (L  Ak 1 )?ij = k
Pijk = >0 if (i; j ) 2 M
:(L  Ak 1 )?ij otherwise.
Notice that P k is always compatible with L  Ak so that j(L  Ak )? j  jP k j  j(L  Ak 1 )? j 2jM j.
(Since M is a maximum matching, (L  Ak 1 )? can have no more than jM j cells assigned to k.)
This proves the following lemma.
Lemma 8 Matching is a 21 -approximation algorithm.
The following example (Figure 6) demonstrates that our analysis of the performance of the
Matching algorithm is in fact tight. The PLS (left) can in fact be lled to completion (right),
but a bad choice of matching can block it (middle).
We repeat the matching step for each of the n colors. Each matching step can be performed in
O(n2:5) by the Hopcroft-Karp algorithm ([13]). Therefore, this algorithm runs in O(n3:5) time.
9
2 3 4 2 3 1 2 3 4
2 1 2 4 1 2 3 4 1
3 2 3 4 2 3 4 1 2
1 2 1 2 4 4 1 2 3

Figure 6: Worst-case Scenario for the Matching Algorithm

6 Extending Blocked PLSs


In many applications, the problem of completing a blocked PLS with new available colors is signi -
cant. A natural question is this: given a blocked n  n PLS L, how many extra colors are necessary
to complete it. This can be answered exactly (in polynomial time) by constructing the bipartite
graph GL on the 2n vertices, Ri; Cj ; 1  i; j  n, such that there is an edge between Ri and Cj
i Lij = 0; and observing by Hall's theorem ([12]) that the edge set of this bipartite graph can be
partitioned into k disjoint matchings where k is the maximum degree of a vertex in the bipartite
graph de ned above. By coloring each such matching with a new color, we ensure that there are
no con icts generated. Thus, k new colors suce. Notice that k colors are indeed necessary since
some node of GL has degree k .
In fact, one can see that k  n=2 by a proof similar to that of Lemma 2. And, in fact k can
be equal to n=2, as can be seen from the example in Figure 4.
A related question is this: given a blocked L, and k new colors, what is the maximum number of
entries that can be lled using these new colors. For k = 1, it is equivalent to nding the maximum
matching in GL (de ned above) and hence can be exactly computed. For P k > 1, this problem
is equivalent to nding disjoint matchings M1 ; : : : ; Mk in GL such that ki=1 jMi j is maximized.
This number can be exactly computed by computing
S a maximum
S ow on the following graph G0L.
V (GL0 ) = V (GL) [ fs; tg, E (GL0 ) = E (GL) [ni=1 (s; Ri) [nj=1 (Cj ; t), and c(e) = 1 if e 2 E (GL)
and c(e) = k otherwise. It is easy to extract the actual color assignment to edges from the maximum
ow graph.

7 Further Work
De ne the latin square polytope to be
X X X
Ln = fx 2 (Rn)3 j 8i; j; k xijk  0; 8j; k xijk  1; 8i; k xijk  1; 8i; j xijk  1g:
i j k
We conjecture the following:
Conjecture 1 For every vertex v 2 Ln , 8i; j; k; vijk = 0 or vijk  n1 .
This would show that the approximation algorithm of Section 5.1 achieves a factor of 12 +
( n1 ).
Acknowledgements
We thank Michel Goemans (M.I.T.), Monika Rauch Henzinger (Cornell), Eric Jordan (M.I.T.), Ram
Ramanathan (BBN Systems), and Mike Sipser (M.I.T.) for their technical help and suggestions.

10
References
[1] R. A. Barry and P. A. Humblet. Bounds on the number of wavelengths needed in WDM
networks. In LEOS '92 Summer Topical Meeting Digest, pages 21{22, 1992.
[2] R. A. Barry and P. A. Humblet. Latin routers, design and implementation. IEEE/OSA Journal
of Lightwave Technology, pages 891{899, May/June 1993.
[3] C. Chen and S. Banerjee. Optical switch con guration and lightpath assignment in wavelength
routing multihop lightwave networks. In Proceedings of INFOCOM 1995, pages 1300{1307.
IEEE, 1995.
[4] N. K. Cheung, K. Nosu, and G. Winzer, editors. IEEE JSAC: Special Issue on Dense WDM
Networks, volume 8, August 1990.
[5] I. Chlamtac, A. Ganz, and G. Karmi. Lightpath communications: An approach to high
bandwidth optical WANs. IEEE Transactions on Communication, 40(7):1171{1182, July 1992.
[6] C. J. Colbourn. The complexity of completing partial latin squares. Discrete Applied Mathe-
matics, 8:25{30, 1984.
[7] J. Denes and A. D. Keedwell. Latin Squares and Their Applications. Academic Press, Inc.,
New York, 1974.
[8] J. Denes and A. D. Keedwell. Latin Squares: New Developments in the Theory and Applica-
tions. Number 46 in Annals of Discrete Mathematics. North-Holland, 1991.
[9] T. Evans. Embedding incomplete latin squares. Amer. Math. Monthly, 67:958{961, 1960.
[10] F. R. Giles, T. Oyama, and L. E. Trotter. On completing partial latin squares. In Proceedings of
the Eighth Southeastern Conference on Combinatorics, Graph Theory, and Computing, pages
523{543, 1977.
[11] P. E. Green. Fiber-Optic Networks. Prentice-Hall, 1992.
[12] M. Hall. Distinct representatives of subsets. Bulletin of the American Mathematical Society,
54:922{926, 1948.
[13] J. E. Hopcroft and R. M. Karp. An n 2 algorithm for maximum matchings in bipartite graphs.
5

SIAM Journal of Computing, 2(4):225{231, December 1973.


[14] IEEE/OSA. IEEE/OSA Journal of Lightwave Technology, special issue on Broad-Band Optical
Networks, volume 11, May/June 1993.
[15] M. Irshid and M. Kavehrad. A wdm cross-connected star topology for multihop lightwave
networks. IEEE/OSA Journal of Lightwave Technology, pages 828{835, June 1992.
[16] C. C. Lindner and T. Evans. Finite Embedding Theorems for Partial Designs and Algebras.
Les Presses de L'Universite de Montreal, 1977.
[17] R. Ramaswami. Multi-wavelength lightwave networks for computer communication. IEEE
Communications Magazine, 31(2):78{88, February 1993.

11
[18] A. Rosa. Problem session. In Proceedings of the Second Caribbean Conference on Combina-
torics and Computing, 1977.
[19] B. Smetaniuk. A new construction of latin squares I. A proof of the Evans conjecture. Ars
Combinatorica, 11:155{172, 1981.
[20] R. E. Tarjan. Data Structures and Network Algorithms, volume 44 of Regional Conference
Series in Applied Mathematics. Society for Industrial and Applied Mathematics, 1983.
[21] Z. Zhang and A. Acampora. A heuristic wavelength assignment algorithm for multihop WDM
networks with wavelength routing and wavelength reuse. In Proc. IEEE Infocom '94, pages
534{543, Toronto, June 1994.

12

You might also like