Considérant en fait et en droit :
1.
Le 18 février 2009, le Conseil municipal de Genève (parlement communal) a adopté un règlement fixant les conditions de location des logements à caractère social de la Ville de Genève (ci-après : le règlement municipal ou RCL).
Le règlement municipal prévoit la tenue d'un inventaire des immeubles propriétés de la Ville de Genève et incorporés à son patrimoine financier. Parmi diverses catégories, l'inventaire doit distinguer les logements à caractère social. Les art. 9 à 14 RCL sont applicables à ces logements; ils règlent de manière détaillée la fixation du loyer en fonction de la situation pécuniaire du locataire et des autres personnes de son ménage.
2.
Depuis le 1er mai 2005, F.X._ et H.X._ sont locataires d'un appartement de cinq pièces au cinquième étage d'un bâtiment propriété de la Ville de Genève. Conclu avec cette collectivité pour une durée initiale de cinq ans, le contrat est actuellement résiliable sous préavis de trois mois avec effet au 30 avril de chaque année. Le loyer annuel initial était fixé à 15'504 fr., frais accessoires en sus.
Le 9 novembre 2010, les parties ont conclu un avenant au contrat: elles ont convenu que le règlement municipal et ses modifications futures sont désormais intégrés à leur relation contractuelle.
3.
Le 5 décembre 2017, usant de la formule officielle prévue par l'<ref-law>, la bailleresse a notifié aux locataires un avis de majoration du loyer avec effet au 1er mai 2018. Le loyer annuel était porté à 22'992 fr., frais accessoires en sus. Le motif de la majoration était indiqué comme suit :
Loyer fixé en application du règlement fixant les conditions de location des logements à caractère social de la Ville de Genève du 18 février 2009. Il est tenu compte de votre revenu annuel déterminant de 109'975 fr., du taux d'occupation et du taux d'activité du ménage.
Dans une lettre d'accompagnement, la bailleresse affirmait que la majoration « [restait] dans les limites des loyers usuels admissibles au sens du CO ». Les locataires recevaient également une fiche de calcul du loyer.
Les locataires ont contesté la majoration du loyer par une requête adressée à l'autorité de conciliation compétente. La conciliation n'a pas abouti et l'autorité a établi une autorisation de procéder; elle l'a délivrée à la bailleresse en application de l'<ref-law>.
4.
Le 12 avril 2018, la Ville de Genève a ouvert action contre F.X._ et H.X._ devant le Tribunal des baux et loyers; celui-ci était requis de valider la majoration du loyer annuel de 15'504 fr. à 22'992 fr. dès le 1er mai 2018.
Les défendeurs ont conclu au rejet de l'action.
Le tribunal s'est prononcé le 13 novembre 2018. Accueillant l'action, il a fixé le loyer à 1'916 fr. par mois dès le 1er mai 2018, soit à 22'992 fr. par année, frais accessoires en sus.
La Chambre des baux et loyers de la Cour de justice a statué le 30 septembre 2019 sur l'appel des défendeurs. Elle a accueilli cet appel et constaté la nullité de l'avis de majoration du loyer signifié le 5 décembre 2017.
5.
Agissant par la voie du recours en matière civile, la demanderesse requiert le Tribunal fédéral de confirmer le jugement du Tribunal des baux et loyers.
Les défendeurs concluent au rejet du recours.
6.
Les conditions de recevabilité du recours en matière civile sont satisfaites, notamment à raison de la valeur litigieuse; celle-ci correspond à vingt fois le montant annuel de la majoration en cause (<ref-law>; <ref-ruling> consid. 1.2 p. 210).
7.
A teneur de l'<ref-law>, le bailleur peut en tout temps majorer le loyer avec effet au prochain terme de résiliation du contrat. L'avis de majoration doit parvenir au locataire dix jours au moins avant le début du délai de résiliation et être effectué au moyen d'une formule agréée par le canton. Les motifs de la majoration doivent y être indiqués; à défaut, l'avis est nul de par l'<ref-law>. Les motifs doivent être « précis »; en outre, dans le cas où la majoration repose sur plusieurs motifs, l'avis doit indiquer le montant correspondant à chacun d'eux (art. 19 al. 1 let. a ch. 4 OBLF). Les motifs peuvent être indiqués dans une lettre accompagnant la formule agréée, à condition que celle-ci contienne une référence expresse à cette lettre (<ref-law>).
Selon la jurisprudence, les motifs doivent être énoncés de manière précise. Ils doivent permettre au locataire de saisir la portée et la justification de la majoration du loyer, de manière à pouvoir apprécier en pleine connaissance de cause l'opportunité de la contester ou, au contraire, de s'y soumettre (<ref-ruling> consid. 3.3 p. 377; <ref-ruling> consid. 3.2.1 p. 365; <ref-ruling> consid. 3a p. 8). La contestation ainsi envisagée est celle prévue par l'<ref-law>, dans l'éventualité où le locataire tient la majoration pour abusive selon les art. 269 et 269a CO. Il s'ensuit que les motifs énoncés par le bailleur doivent justifier la majoration au regard de critères pertinents du point de vue de ces dispositions-ci. Une motivation manquante ou insuffisamment précise entraîne la nullité de l'avis de majoration (ATF <ref-ruling> consid. 3.2.1 p. 365/366).
A teneur de l'<ref-law>, les dispositions relatives à la contestation des loyers abusifs ne s'appliquent pas aux locaux d'habitation en faveur desquels des mesures d'encouragement ont été prises par les pouvoirs publics et dont le loyer est soumis au contrôle d'une autorité. La Cour de justice ne retient pas, et la demanderesse ne prétend pas non plus que le logement présentement concerné soit soumis à ce régime dérogatoire; l'<ref-law> n'est donc pas en cause.
8.
La Cour de justice retient que la majoration de loyer en l'occurrence admissible est plafonnée par les clauses topiques du règlement municipal et aussi, cumulativement, par les art. 269 et ss CO. De cela, la Cour déduit que l'affirmation « la majoration reste dans les limites des loyers usuels admissibles au sens du CO » devait figurer dans l'avis de majoration sur formule agréée. Cette affirmation est certes présente dans la lettre d'accompagnement mais, selon la Cour, elle est inopérante faute d'une référence expresse à cette lettre, répondant à l'exigence de l'<ref-law>.
Le motif de majoration effectivement indiqué dans l'avis litigieux se rapporte exclusivement à un calcul du loyer fondé sur le règlement municipal. Or, en raison de la primauté du droit fédéral, l'application de ce règlement ne peut pas aboutir à un résultat contraire aux art. 269 et 269a CO portant protection contre les loyers abusifs. Le règlement a pour seul effet de restreindre la liberté contractuelle de la Ville de Genève dans la gestion de son propre patrimoine immobilier (arrêt 4A_425/2019 du 11 novembre 2019, consid. 8). L'avis n'indique aucun motif de majoration pertinent au regard des dispositions de droit fédéral ainsi déterminantes. Au demeurant, même si elle était présente dans l'avis de majoration litigieux plutôt que dans sa lettre d'accompagnement, l'affirmation « la majoration reste dans les limites des loyers usuels admissibles au sens du CO » ne satisferait manifestement pas à l'exigence de précision qui est consacrée par la jurisprudence ci-mentionnée relative à l'<ref-law>. Il s'ensuit que conformément à l'appréciation de la Cour de justice, l'avis litigieux est nul d'après cette dernière règle.
9.
A titre principal, selon les conclusions des défendeurs, la Cour de justice était requise d'annuler la majoration de loyer. La Cour n'était pas liée par la motivation de l'appel (Francesca Verda Chiocchetti, in Commentario pratico al Codice di diritto processuale civile svizzero, Francesco Trezzini, éd., 2e éd., 2017, n° 3 ad <ref-law>; Martin Sterchi, in Commentaire bernois, n° 4 ad <ref-law>) et il lui était donc permis, au contraire, d'aborder dans le cadre des conclusions présentées une question juridique qui ne lui était pas explicitement soumise. Par conséquent, contrairement à l'argumentation de la demanderesse, cette autorité n'a pas méconnu les limites de son pouvoir d'examen en relevant d'office un vice flagrant dans l'avis de majoration signifié le 5 décembre 2017.
10.
Le recours en matière civile se révèle privé de fondement, ce qui conduit à son rejet. A titre de partie qui succombe, la Ville de Genève doit acquitter l'émolument à percevoir par le Tribunal fédéral. L'exonération prévue par l'<ref-law> n'est en l'occurrence pas applicable en raison de l'intérêt patrimonial en cause. Cette collectivité doit également acquitter les dépens auxquels les défendeurs peuvent prétendre.


Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demanderesse acquittera un émolument judiciaire de 3'000 francs.
3.
La demanderesse versera une indemnité de 3'500 fr. aux défendeurs, créanciers solidaires.
4.
Le présent arrêt est communiqué aux parties et à la Cour de justice du canton de Genève.
Lausanne, le 4 février 2020
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La présidente : Kiss
Le greffier : Thélin