
Fifty-eighth session Agenda item 9 Note verbale dated 28 March 2002 from the Permanent Mission of Armenia to the United Nations Office at Geneva addressed to the secretariat of the Commission on Human Rights The Permanent Mission of the Republic of Armenia to the United Nations Office and other international organizations at Geneva presents its compliments to the secretariat of the Commission on Human Rights and has the honour to request that the attached* information be circulated as an official document of the fifty-eighth session of the Commission under agenda item 9 , “ Question of the violation of human rights and fundamental freedoms in any part of the world ” . * The annex is reproduced as received in the language of submission and in English only . Annex More than 14 years have passed since Sumgait . Sufficient time for a full appraisal of the gravity of this tragic event for the Armenian people . The events of Sumgait were a natural consequence of the atmosphere of total lawlessness , in which the Azerbaijani leaders spurred on the zealots in the country and incited them to further Sumgait-like atrocities . Whipped up into a state of nationalist histeria , the deceived masses perpetrated vicious crimes , burning people alive , demonstrating how easily entire multitudes could be reft of any semblance of humanity and many hundreds of people transformed into bloodthirsty sadists . Yet what is possibly still more monstrous than these barbarous acts is the way that the fine upstanding citizens entrusted with the reins of power in the republic and in the country did everything they could to conceal the truth about Sumgait and to shelter the culprits from justice . The impunity enjoyed by the instigators and organizers of the Sumgait pogrom is proof that the State itself took them under its wing . The way that events subsequently developed in Azerbaijan graphically demonstrated that the Sumgait approach to the settlement of ethnic scores was to be the chosen method . As early as May 1988 , on the initiative of the Shusha district Party committee , the process of deporting Armenians from Shusha was commenced . In September , the bloody events took place in the village of Khojaly and the last Armenians were driven out of Shusha . In November pogroms were being waged throughout Azerbaijan . Yet there was no response - neither political , nor legal - to any of these actions . An atmosphere of total impunity prevailed , in which there were repeated incitements to the perpetration of further Sumgait-like massacres . For its part , the Azerbaijani leadership only gave encouragement to those who showed the greatest zeal . The Sumgait events were organized with a view to hushing up and concealing the Nagorny Karabakh problem . A wave of anti-Armenian demonstrations swept across all Azerbaijan in February 1988 , but it was decided to deal the most decisive blow against the Armenians of Sumgait - as the most defenceless . Thugs were bussed into Sumgait from other regions and local officials drew up lists of all Armenians . Members of the country 's top brass - the first secretary of the Central Committee and the chairman of the Council of Ministers of Azerbaijan - also made their way to Sumgait . Every possible preparation was made : even supplies of cobblestones were brought into the city . The only thing which the organizers of the Sumgait events had not reckoned with was that there might be honest and courageous people among the Azerbaijanis themselves who would refuse to succumb to the hysteria being whipped up . Had it not been for them , the city 's entire Armenian population would have been mercilessly slaughtered . Sumgait was destined to transform the problem of Nagorny Karabakh and the will of its people - an essentially democratic issue - into one of the world 's implacable ethnic conflicts . Sumgait represented the focal point of the genocidal policies conducted by the Azerbaijani leaders against Armenians , one inevitable result of which was the “ cleansing ” of the Nakhichevan region and other historically Armenian territories of their Armenian populations . In the course of three days in February 1988 , virtually the entire territory of this city , with its population of a quarter of a million , became the arena for wide-scale , unrestrained pogroms against the Armenian population . Dozens were killed , a significant number of whom had been burned alive , after being beaten and tortured . Hundreds were wounded , many of them left disabled for life . Women and young girls were raped . More than 200 homes were wrecked and looted , scores of motor cars were set alight or smashed up , and dozens of workshops , shops , kiosks and other social facilities were smashed and plundered . Thousands of people became refugees . And yet is this the only measure of the tragedy - how many people were killed in this city or how many homes were wrecked and looted ? Immeasurable moral losses were suffered not only by the victims of the tragedy , but also by the people in whose name these atrocities were committed . “ After the barbarities of Stalinism ” , wrote Moscow academics in their “ Open letter to friends in Armenia ” , “ no single event has occurred in our country that has dragged us further back from civilization to savagery ” . Sumgait turned two neighbouring peoples - Armenians and Azerbaijanis - into unconcealed and irreconcilable enemies and had exceptionally severe consequences for their subsequent relations with one another . Sumgait demonstrated for the first time that , in a multi-ethnic State which upheld friendship among peoples as one of its most hallowed principles , people could be killed quite simply because they belonged to the wrong nationality . The first Sumgait “ rally ” was not particularly well supported but the second , organized the following day , 27 February , was attended by thousands of people , many of whom had been sent out on to the city square on the orders of their managers and supervisors . Among the rallying calls , uttered not only by the instigators , but also by such prominent citizens of Sumgait as the headmaster of secondary school No. 25 and a well-known actress from the Arablinksy Theatre , were references to Armenian “ atrocities ” and the “ martyrs ” of Kafan , the Karabakh issue , and the need to punish the Armenians , to kill them and to drive them from Sumgait and from Azerbaijan in general . The constant refrain of many harangues and the most often repeated slogan of those days was “ Death to Armenians ! ” . Besides words , other means of agitation were also used , such as vodka and drugs , dispensed directly from lorries to members of the crowd in great quantities and free of charge . In the evening of 27 February , the “ rallies ” had degenerated into wide-scale violence . The first beatings and pogroms continued late into the night and then , the following day , hundreds of people who had been directly involved in the perpetration of these crimes assembled for their next “ rally ” , just as if nothing untoward had happened . This is an extremely important point : the participants in the pogrom were thereby given definitive assurances of their impunity . The culmination of the “ rally ” on 28 February was reached when Muslim-zade , first secretary of the Sumgait city Party committee , took up the State flag of the Azerbaijani SSR and led the huge crowd which had gathered behind him on to Lenin Square . Thereupon the crowd scattered and , already equipped with weapons , launched their attacks against the homes of Armenians … The bloody tragedy which unfolded in Sumgait encompassed every imaginable human crime and suffering . We cannot but be astounded by the scale and impunity of the pogrom and the cynicism and brutality with which it was conducted . The crimes of those days seem quite inconceivable when we consider that the gangs perpetrating them were made up not of professional murderers and sadists , but of ordinary citizens , predominantly young people . For an explanation , we must look back in history and consider certain ideological and psychological realities . The massacre of Armenians in the city of Baku in 1918 , the massacre in Shusha in 1920 , the methodical expulsion , which ultimately achieved a 100 per cent success , of the indigenous Armenians from the Nakhichevan Autonomous SSR , countless crimes of an ethnic nature , the constant , virtually undisguised discrimination against the Armenian population throughout the Republic of Azerbaijan , the defiling of monuments to Armenian history and architecture , the hatred of Armenians instilled in children from their earliest years - all this must be taken into consideration if we are to understand how a student from a technical college or a factory worker who , prior to this , never did anything particularly reprehensible , entirely normal people with their own interests , family-oriented people , should suddenly prove capable of responding on the spur of the moment to incitations to kill their fellow citizens entirely innocent of any crime , to commit murders , and to perpetrate these acts with a pathological brutality that appalled even the forensic experts . And yet , however monstrous their offences , it is not they who are the prime culprits but those who were able so subtly and adroitly to transform them into monsters . Since no condemnation was expressed and no punishment handed down for the crimes committed at Sumgait , they were followed by dozens of lesser and greater pogroms of the Armenian population of the Azerbaijani SSR , including in the capital city , Baku , where more Armenian blood was spilled . And with the passing of time , even in Sumgait , where no Armenians remained , persecutions were mounted against those who had saved Armenians during the days of that February hell , while at rallies in Baku the butchers of Sumgait were hailed as nothing less than national heroes . The consequences of connivance are plain for all to see . “ Sumgait became a spur for new tragedies and bloodshed ” , wrote the academics in their “ Open letter to friends in Armenia ” . “ While the blood of Sumgait might be on the hands of those who organized and carried out this bacchanal , responsibility for what followed rests with all those who failed to respond to the scale of the tragedy , who failed to understand and to this day fail to understand that no one , be he or she Lithuanian or Jew , Bashkir or Russian , that no people and no single person can feel safe while the crimes of murderers are allowed to go unpunished ” . The organizers and the perpetrators of the Sumgait atrocities must be punished . The peoples of the world must know the truth about the cruelty and barbarity of the Azerbaijani authorities and the criminals responsible for this monstrous crime . 