adjoint (infinity,1)-functor




The notion of adjunction between two (∞,1)-functors generalizes the notion of adjoint functors from category theory to (∞,1)-category theory.

There are many equivalent definitions of the ordinary notion of adjoint functor. Some of them have more evident generalizations to some parts of higher category theory than others.

  • One definition of ordinary adjoint functors says that a pair of functors CRLDC \stackrel{\overset{L}{\leftarrow}}{\underset{R}{\to}} D is an adjunction if there is a natural isomorphism

    Hom C(L(),()Hom D(,R()). Hom_C(L(-),(-) \simeq Hom_D(-,R(-)) \,.

    The analog of this definition makes sense very generally in (∞,1)-category theory, where Hom C(,):C op×CGrpdHom_C(-,-) : C^{op} \times C \to \infty Grpd is the (,1)(\infty,1)-categorical hom-object.

  • One other characterization of adjoint functors in terms of their cographs/heteromorphisms: the Cartesian fibrations to which the functor is associated. At cograph of a functor it is discussed how two functors L:CDL : C \to D and R:DCR : D \to C are adjoint precisely if the cograph of LL coincides with the cograph of RR up to the obvious reversal of arrows

(LR)(cograph(L)cograph(R op) op). (L \dashv R) \Leftrightarrow (cograph(L) \simeq cograph(R^{op})^{op}) \,.

Using the (∞,1)-Grothendieck construction the notion of cograph of a functor has an evident generalization to (,1)(\infty,1)-categories.


In terms of hom-equivalences


(in terms of hom equivalence induced by unit map)

A pair of (∞,1)-functors

CRLD C \stackrel{\overset{L}{\leftarrow}}{\underset{R}{\to}} D

is an adjunction, if there exists a unit transformation ϵ:Id DRL\epsilon : Id_D \to R \circ L – a morphism in the (∞,1)-category of (∞,1)-functors Func(D,D)Func(D,D) – such that for all dDd \in D and cCc \in C the induced morphism

Hom C(L(d),c)R L(d),cHom D(R(L(d)),R(c))Hom D(ϵ,R(c))Hom D(d,R(c)) Hom_C(L(d),c) \stackrel{R_{L(d), c}}{\to} Hom_D(R(L(d)), R(c)) \stackrel{Hom_D(\epsilon, R(c))}{\to} Hom_D(d,R(c))

is an equivalence of ∞-groupoids.

In terms of the concrete incarnation of the notion of (,1)(\infty,1)-category by the notion of quasi-category, we have that Hom C(L(d),c)Hom_C(L(d),c) and Hom D(d,R(c))Hom_D(d,R(c)) are incarnated as hom-objects in quasi-categories, which are Kan complexes, and the above equivalence is a homotopy equivalence of Kan complexes.

In this form this definition appears as HTT, def.

In terms of cographs/heteromorphisms

We discuss here the quasi-category theoretic analog of Adjoint functors in terms of cographs (heteromorphisms).

We make use here of the explicit realization of the (∞,1)-Grothendieck construction in its incarnation for quasi-categories: here an (∞,1)-functors L:DCL : D \to C may be regarded as a map Δ[1] op\Delta[1]^{op} \to (∞,1)Cat, which corresponds under the Grothendieck construction to a Cartesian fibration of simplicial sets coGraph(L)Δ[1]coGraph(L) \to \Delta[1].


(in terms of Cartesian/coCartesian fibrations)

Let CC and DD be quasi-categories. An adjunction between CC and DD is

Two (∞,1)-functors L:CDL : C \to D and R:DCR : D \to C are called adjoint – with LL left adjoint to RR and RR right adjoint to LL if

  • there exists an adjunction KIK \to I in the above sense

  • and LL and KK are the associated functors to the Cartesian fibation p:KΔ[1]p \colon K \to \Delta[1] and the Cartesian fibration p op:K opΔ[1] opp^{op} : K^{op} \to \Delta[1]^{op}, respectively.

In the homotopy 2-category


(in terms of the homotopy 2-category)

A pair of adjoint (∞,1)-functors is an adjunction in the homotopy 2-category of (∞,1)-categories.

This is Riehl-Verity 15, Def. 4.0.1

For the equivalence to the other definitions see Riehl-Verity 15, Rem. 4.4.5.



For CC and DD quasi-categories, the two definitions of adjunction,

  1. in terms of Hom-equivalence induced by unit maps (Def. )

  2. in terms of Cartesian/coCartesian fibrations (Def. )

are equivalent.

This is HTT, prop


First we discuss how to produce the unit for an adjunction from the data of a correspondence KΔ[1]K \to \Delta[1] that encodes an \infty-adjunction (fg)(f \dashv g).

For that, define a morphism F:Λ[2] 2×CKF' : \Lambda[2]_2 \times C \to K as follows:

  • on {0,2}\{0,2\} it is the morphism F:C×Δ[1]KF : C \times \Delta[1] \to K that exhibits ff as associated to KK, being Id CId_C on C×{0}C \times \{0\} and ff on C×{2}C \times \{2\};

  • on {1,2}\{1,2\} it is the morphism C×Δ[1]f×IdD×Δ[1]GKC \times \Delta[1] \stackrel{f \times Id}{\to} D \times \Delta[1] \stackrel{G}{\to} K, where GG is the morphism that exhibits gg as associated to KK;

Now observe that FF' in particular sends {1,2}\{1,2\} to Cartesian morphisms in KK (by definition of functor associated to KK). By one of the equivalent characterizations of Cartesian morphisms, this means that the lift in the diagram

Λ[2] 2 F K F Δ[2]×C Δ[1] \array{ \Lambda[2]_2 &\stackrel{F'}{\to}& K \\ \downarrow &{}^{F''}\nearrow& \downarrow \\ \Delta[2] \times C &\to & \Delta[1] }

exists. This defines a morphism C×{0,1}KC \times \{0,1\} \to K whose components may be regarded as forming a natural transformation u:d Cgfu : d_C \to g \circ f.

To show that this is indeed a unit transformation, we need to show that the maps of hom-object in a quasi-category for all cCc \in C and dDd \in D

Hom D(f(f),d)Hom C(g(f(c)),g(d))Hom C(c,g(d)) Hom_D(f(f), d) \to Hom_C(g(f(c)), g(d)) \to Hom_C(c, g(d))

is an equivalence, hence an isomorphism in the homotopy category. Once checks that this fits into a commuting diagram

Hom D(f(c),d) Hom C(g(f(c)),g(d)) Hom C(c,g(d)) Hom K(C,D) = Hom K(C,D). \array{ Hom_D(f(c), d) &\to& Hom_C(g(f(c)), g(d)) &\to& Hom_C(c, g(d)) \\ \downarrow &&&& \downarrow \\ Hom_K(C,D) &&=&& Hom_K(C,D) } \,.

For illustration, chasing a morphism f(c)df(c) \to d through this diagram yields

(f(c)d) (g(f(c))g(d)) (cg(f(c))g(d)) (cg(f(c))f(c)d) = (cg(f(c))g(d)d), \array{ (f(c) \to d) &\mapsto& (g(f(c)) \to g(d)) &\mapsto& (c \to g(f(c)) \to g(d)) \\ \downarrow && && \downarrow \\ (c \to g(f(c)) \to f(c) \to d) &&=&& (c \to g(f(c)) \to g(d) \to d) } \,,

where on the left we precomposed with the Cartesian morphism

g(f(c)) c f(c) \array{ && g(f(c)) \\ & \nearrow &\Downarrow^{\simeq}& \searrow \\ c &&\to&& f(c) }

given by F| c:Δ[2]KF''|_{c} : \Delta[2] \to K, by …

Uniqueness of adjoints

The adjoint of a functor is, if it exists, essentially unique:


If the (,1)(\infty,1)-functor between quasi-categories L:DCL : D \to C admits a right adjoint R:CDR : C \to D, then this is unique up to homotopy.

Moreover, even the choice of homotopy is unique, up to ever higher homotopy, i.e. the collection of all right adjoints to LL forms a contractible ∞-groupoid, in the following sense:

Let Func L(C,D),Func R(C,D)Func(C,D)Func^L(C,D), Func^R(C,D) \subset Func(C,D) be the full sub-quasi-categories on the (∞,1)-category of (∞,1)-functors between CC and DD on those functors that are left adjoint and those that are right adjoints, respectively. Then there is a canonical equivalence of quasi-categories

Func L(C,D)Func R(D,C) op Func^L(C,D) \stackrel{\simeq}{\to} Func^R(D,C)^{op}

(to the opposite quasi-category), which takes every left adjoint functor to a corresponding right adjoint.


This is HTT, prop (also remark, and HTT, prop.

The idea is to construct the category of right adjoints as an intersection of full subcategories

Func R(C,D) C D (D C) op Gpd C op×D \array{ Func^R(C,D) &\to& C^D \\ \downarrow & & \downarrow \\ (D^C)^{op} &\to& \infty Gpd^{C^{op} \times D} }

where the inclusions are given by the yoneda embedding. An element of Func R(C,D)Func^R(C,D) corresponds to a functor p:C op×DGpdp : C^{op} \times D \to \infty Gpd for which there exists a pair of functors g:DCg : D \to C and f:CDf : C \to D such that pD(f,)C(,g)p \simeq D(f-,-) \simeq C(-,g-).

Uniqueness of unit and counit

Given functors f:CDf : C \to D and g:DCg : D \to C, we can use the (∞,1)-end to determine compute a chain of equivalences

C C(id,gf) cCC(c,gf(c)) cCGpd D(D(f(c),),C(c,g)) Gpd C op×D(D(f,),C(,g)) \begin{aligned} C^C(id, gf) &\simeq \int_{c \in C} C(c, gf(c)) \\ &\simeq \int_{c \in C} \infty Gpd^D(D(f(c), -), C(c, g-)) \\ &\simeq Gpd^{C^{\op} \times D}(D(f-, -), C(-, g-)) \end{aligned}

dually, we can identify the space of counits as

D D(fg,id)Gpd C op×D(C(,g),D(f,)) D^D(fg, id) \simeq Gpd^{C^{\op} \times D}(C(-, g-), D(f-, -))

So each half of the equivalence D(f,)C(,g)D(f-,-) \simeq C(-,g-) corresponds essentially uniquely to a choice of unit and counit transformation.

Preservation of limits and colimits

Recall that for (LR)(L \dashv R) an ordinary pair of adjoint functors, the fact that LL preserves colimits (and that RR preserves limits) is a formal consequence of

  1. the hom-isomorphism Hom C(L(),)Hom D(,R())Hom_C(L(-),-) \simeq Hom_D(-,R(-));

  2. the fact that Hom C(,):C op×CSetHom_C(-,-) : C^{op} \times C \to Set preserves all limits in both arguments;

  3. the Yoneda lemma, which says that two objects are isomorphic if all homs out of (into them) are.

Using this one computes for all cCc \in C and diagram d:IDd : I \to D

Hom C(L(lim d i),c) Hom D(lim d i,R(c)) lim Hom D(d i,R(c)) lim Hom C(L(d i),c) Hom C(lim L(d i),c), \begin{aligned} Hom_C(L(\lim_{\to} d_i), c) & \simeq Hom_D(\lim_\to d_i, R(c)) \\ & \simeq \lim_{\leftarrow} Hom_D(d_i, R(c)) \\ & \simeq \lim_{\leftarrow} Hom_C(L(d_i), c) \\ & \simeq Hom_C(\lim_{\to} L(d_i), c) \,, \end{aligned}

which implies that L(lim d i)lim L(d i)L(\lim_\to d_i) \simeq \lim_\to L(d_i).

Now to see this in (,1)(\infty,1)-category theory (…) HTT Proposition

Adjunctions on homotopy categories


For (LR):CD(L \dashv R) : C \stackrel{\leftarrow}{\to} D an (,1)(\infty,1)-adjunction, its image under decategorifying to homotopy categories is a pair of ordinary adjoint functors

(Ho(L)Ho(R)):Ho(C)Ho(D). (Ho(L) \dashv Ho(R)) : Ho(C) \stackrel{\leftarrow}{\to} Ho(D) \,.

This is HTT, prop

This follows from that fact that for ϵ:Id CRL\epsilon : Id_C \to R \circ L a unit of the (,1)(\infty,1)-adjunction, its image Ho(ϵ)Ho(\epsilon) is a unit for an ordinary adjunction.


The converse statement is in general false. A near converse is given by HTT, prop if one instead considers HoHo-enriched homotopy categories: if Ho(L)Ho(L) has a right adjoint, then so does LL.

One way to find that an ordinary adjunction of homotopy categories lifts to an (,1)(\infty,1)-adjunction is to exhibit it as a Quillen adjunction between simplicial model category-structures. This is discussed in the Examples-section Simplicial and derived adjunction below.

Full and faithful adjoints

As for ordinary adjoint functors we have the following relations between full and faithful adjoints and idempotent monads.


Given an (,1)(\infty,1)-adjunction (LR):CD(L \dashv R) : C \to D

Lurie, prop., See also top of p. 308.

On over-(,1)(\infty,1)-categories



(LR):DRLC (L \dashv R) : D \stackrel{\overset{L}{\leftarrow}}{\underset{R}{\to}} C

be a pair of adjoint (,1)(\infty,1)-functors where the (,1)(\infty,1)-category CC has all (∞,1)-pullbacks.

Then for every object XCX \in C there is induced a pair of adjoint (,1)(\infty,1)-functors between the over-(∞,1)-categories

(L/XR/X):D/(LX)R/XL/XC/X (L/X \dashv R/X) : D/(L X) \stackrel{\overset{L/X}{\leftarrow}}{\underset{R/X}{\to}} C/X


  • L/XL/X is the evident induced functor;

  • R/XR/X is the composite

    R/X:D/LXRC/(RLX)i X *C/X R/X : D/{L X} \stackrel{R}{\to} C/{(R L X)} \stackrel{i_{X}^*}{\to} C/X

    of the evident functor induced by RR with the (∞,1)-pullback along the (LR)(L \dashv R)-unit at XX.

This is HTT, prop.

In terms of universal arrows


An (,1)(\infty,1)-functor G:DCG:D\to C admits a left adjoint if and only if for each XCX\in C, the comma (infinity,1)-category? (XG)(X \downarrow G) has an initial object, i.e. every object XCX\in C admits a universal arrow XGFXX\to G F X to GG.

This is stated explicitly as Riehl-Verity, Corollary 16.2.7, and can be extracted with some work from HTT, Proposition

Preservation by exponentiation


Let f:CDf : C \to D be left adjoint to g:DCg : D \to C. Then for any AA, f Af^A is left adjoint to g Ag^A and A gA^g is left adjoint to A fA^f.


Let η:id Cgf\eta : id_C \Rightarrow gf be a unit transformation. The property of being a unit transformation can be detected at the level of enriched homotopy categories, so A η:id A CA fA gA^\eta: id_{A^C} \Rightarrow A^f A^g and η A:id C Ag Af A\eta^A : id_{C^A} \Rightarrow g^A f^A are also unit transformations.

Category of adjunctions

The functorality of adjunctions can be organized into the existence of two wide subcategories LAdj(,1)CatLAdj \subseteq (\infty,1)Cat and RAdj(,1)CatRAdj \subseteq (\infty,1)Cat whose functors are the left adjoints and the right adjoints respectively.

We can then define the functor categories

  • Func L:LAdj op×LAdj(,1)CatFunc^L : LAdj^{op} \times LAdj \to (\infty,1)Cat is defined by taking Func L(C,D)Func(C,D)Func^L(C,D) \subseteq Func(C, D) to be the full subcategory spanned by LAdj(C,D)LAdj(C, D).

  • Func R:RAdj op×RAdj(,1)CatFunc^R : RAdj^{op} \times RAdj \to (\infty,1)Cat is defined by taking Func R(C,D)Func(C,D)Func^R(C,D) \subseteq Func(C, D) to be the full subcategory spanned by RAdj(C,D)RAdj(C, D).

Lurie defines an adjunction to be a functor X[1]X \to [1] that is both a cartesian and a cocartesian fibration. We can generalize this to


A functor p:XSp : X \to S is an adjunct fibration iff it is both a cartesian fibration and a cocartesian fibration

By the (∞,1)-Grothendieck construction construction, adjunct fibrations over SS correspond to category-valued functors on SS that send arrows of SS to adjoint pairs of categories.


For a functor p:XSp : X \to S of (∞,1)-categories with small fibers.

  • If pp is a cartesian fibration classified by χ:S op(,1)Cat\chi : S^\op \to (\infty,1)Cat, χ\chi factors through RAdjRAdj iff pp is an adjunct fibration

  • If pp is a cocartesian fibration classified by χ:S(,1)Cat\chi : S \to (\infty,1)Cat, χ\chi factors through LAdjLAdj iff pp is an adjunct fibration


This is a restatement of HTT, corr.


There are anti-equivalences ladj:RAdj opLAdjladj : RAdj^{op} \to LAdj and radj:LAdj opRAdjradj : LAdj^{op} \to RAdj that are the identity on objects and the action on homspaces LAdj(C,D)RAdj(D,C)LAdj(C, D) \simeq RAdj(D,C) is the equivalence sending a functor to its adjoint.


By the covariant Grothendieck construction, for any (∞,1)-category C, Map(C,LAdj)Map(C, LAdj) can be identified with the core of the category of adjunct fibrations over CC with small fibers. The same is true of Map(C op,RAdj)Map(C^{\op}, RAdj).

Since the Grothendieck construction is natural in the base category, we obtain the asserted equivalence between LAdjLAdj and RAdj opRAdj^{op}. Taking C=[1]C = [1], this establishes the correspondence between an adjunction and its associated adjoint pair of functors.

As discussed at Uniqueness of Adjoints, this anti-equivalence extends to the (∞,2)-enrichment, in the sense they induce anti-equivalences radj:Func L(C,D) opFunc R(D,C)radj : Func^L(C, D)^{op} \to Func^R(D, C) and ladj:Func R(C,D) opFunc L(D,C)ladj : Func^R(C, D)^{op} \to Func^L(D, C).

The preservation of adjunctions by products and exponentials implies


The product and exponential on (,1)Cat(\infty,1)Cat restrict to functors

  • ×:LAdj×LAdjLAdj- \times - : LAdj \times LAdj \to LAdj and ×:RAdj×RAdjRAdj- \times - : RAdj \times RAdj \to RAdj
  • Func(,):RAdj op×LAdjLAdjFunc(-,-) : RAdj^{op} \times LAdj \to LAdj and Func(,):LAdj op×RAdjRAdjFunc(-,-) : LAdj^{op} \times RAdj \to RAdj


A large class of examples of (,1)(\infty,1)-adjunctions arises from Quillen adjunctions of model categories, or adjunctions in sSet-enriched category theory.

Quillen adjunctions

Any Quillen adjunction induces an adjunction of (infinity,1)-categories on the simplicial localizations. See Hinich 14 or Mazel-Gee 15.

Simplicial and derived adjunctions

We want to produce Cartesian/coCartesian fibration KΔ[1]K \to \Delta[1] from a given sSet-enriched adjunction. For that first consider the following characterization


Let KK be a simplicially enriched category whose hom-objects are all Kan complexes, regard the interval category Δ[1]:={01}\Delta[1] := \{0 \to 1\} as an sSetsSet-category in the obvious way using the embedding const:SetsSetconst : Set \hookrightarrow sSet and consider an sSetsSet-enriched functor KΔ[1]K \to \Delta[1]. Let C:=K 0C := K_0 and D:=K 1D := K_1 be the sSetsSet-enriched categories that are the fibers of this. Then under the homotopy coherent nerve N:sSetCatsSetN : sSet Cat \to sSet the morphism

N(p):N(K)Δ[1] N(p) : N(K) \to \Delta[1]

is a Cartesian fibration precisely if for all objects dDd \in D there exists a morphism f:cdf : c \to d in KK such that postcomposition with this morphism

C(c,f):C(c,c)=K(c,c)K(c,d) C(c',f ) : C(c',c) = K(c',c) \to K(c',d)

is a homotopy equivalence of Kan complexes for all objects cCc' \in C'.

This appears as HTT, prop.


The statement follows from the characterization of Cartesian morphisms under homotopy coherent nerves (HTT, prop., which says that for an sSetsSet-enriched functor p:CDp : C \to D between Kan-complex enriched categories that is hom-object-wise a Kan fibration, a morphim f:ccf : c' \to c'' in CC is an N(p)N(p)-Cartesian morphism if for all objects cCc \in C the diagram

C(c,c) C(c,f) C(c,c) p c,c p c,c D(p(c),p(c)) D(p(c),p(f)) D(p(c),p(c)) \array{ C(c,c') &\stackrel{C(c,f)}{\to}& C(c,c'') \\ \downarrow^{\mathrlap{p_{c,c'}}} && \downarrow^{\mathrlap{p_{c,c''}}} \\ D(p(c),p(c')) &\stackrel{D(p(c),p(f))}{\to}& D(p(c), p(c'')) }

is a homotopy pullback in the model structure on sSet-categories.

For the case under consideration the functor in question is p:KΔ[1]p : K \to \Delta[1] and the above diagram becomes

K(c,c) K(c,f) K(c,c) * *. \array{ K(c,c') &\stackrel{K(c,f)}{\to}& K(c,c'') \\ \downarrow && \downarrow \\ * &\to& * } \,.

This is clearly a homotopy pullback precisely if the top morphism is an equivalence.

Using this, we get the following.


For CC and DD sSet-enriched categories whose hom-objects are all Kan complexes, the image

N(C)N(R)N(L)N(D) N(C) \stackrel{\overset{N(L)}{\to}}{\underset{N(R)}{\leftarrow}} N(D)

under the homotopy coherent nerve of an sSet-enriched adjunction between sSetsSet-enriched categories

CRLD C \stackrel{\overset{L}{\to}}{\underset{R}{\leftarrow}} D

is an adjunction of quasi-categories.

Moreover, if CC and DD are equipped with the structure of a simplicial model category then the quasi-categorically derived functors

N(C )RLN(D ) N(C^\circ) \stackrel{\overset{L}{\to}}{\underset{R}{\leftarrow}} N(D^\circ)

form an adjunction of quasi-categories.


The first part is HTT, cor., the second HTT, prop.

To get the first part, let KK be the sSetsSet-category which is the join of CC and DD: its set of objects is the disjoint union of the sets of objects of CC and DD, and the hom-objects are

  • for c,cCc,c' \in C: K(c,c):=C(c,c)K(c,c') := C(c,c');

  • for d,dDd,d' \in D: K(d,d):=D(d,d)K(d,d') := D(d,d');

  • for cCc \in C and dDd \in D: K(c,d):=C(L(c),d)=D(c,R(d))K(c,d) := C(L(c),d) = D(c,R(d));


    K(d,c)=K(d,c) = \emptyset

and equipped with the evident composition operation.

Then for every dDd \in D there is the morphism Id R(d)K(R(d),d)Id_{R(d)} \in K(R(d),d), composition with which induced an isomorphism and hence an equivalence. Therefore the conditions of the above lemma are satisfied and hence N(K)Δ[1]N(K) \to \Delta[1] is a Cartesian fibration.

By the analogous dual argument, we find that it is also a coCartesian fibration and hence an adjunction.

For the second statement, we need to refine the above argument just slightly to pass to the full sSetsSet-subcategories on fibrant cofibrant objects:

let KK be as before and let K K^\circ be the full sSetsSet-subcategory on objects that are fibrant-cofibrant (in CC or in DD, respectively). Then for any fibrant cofibrant dDd \in D, we cannot just use the identity morphism Id R(d)K(R(d),d)Id_{R(d)} \in K(R(d),d) since the right Quillen functor RR is only guaranteed to respect fibrations, not cofibrations, and so R(d)R(d) might not be in K K^\circ. But we can use the small object argument to obtain a functorial cofibrant replacement functor Q:CCQ : C \to C, such that Q(R(d))Q(R(d)) is cofibrant and there is an acyclic fibration Q(R(d))R(d)Q(R(d)) \to R(d). Take this to be the morphism in K(Q(R(d)),d)K(Q(R(d)), d) that we pick for a given dd. Then this does induce a homotopy equivalence

C(c,Q(R(d)))C(c,R(d))=K(c,d) C(c', Q(R(d))) \to C(c',R(d)) = K(c',d)

because in an enriched model category the enriched hom out of a cofibrant object preserves weak equivalences between fibrant objects.


A pair of adjoint (,1)(\infty,1)-functors (LR):CD(L \dashv R) : C \stackrel{\leftarrow}{\hookrightarrow} D where RR is a full and faithful (∞,1)-functor exhibits CC as a reflective (∞,1)-subcategory of DD. This subcategory and the composite RL:DDR \circ L : D \to D are a localization of DD.


A study of adjoint functors between quasi-categories is given in

and further discussion, including also that of (∞,1)-monads is in

A textbook development in the context of infinity-cosmoi can be found in

The proof that a Quillen adjunction of model categories induces an adjunction of (∞,1)-categories is recorded in

and also in

Last revised on April 3, 2021 at 06:30:45. See the history of this page for a list of all contributions to it.