
27 January 2000 Original : ARABIC , CHINESE , ENGLISH , FRENCH , On 9 and 10 December 1999 , the President of the People 's Republic of China , Mr. Jiang Zemin and the President of the Russian Federation , Mr. Boris Yeltsin , held a second informal summit during which they had an in-depth exchange of views on issues of common interest . The two leaders issued a joint statement on 10 December 1999. Please find attached the text of the aforementioned joint statement in the Chinese and Russian languages . We would be grateful if the joint statement could be issued and ciruclated as an official document of the Conference on Disarmament . ( Signed ) HU Xiaodi ( Signed ) Vasily SIDOROV Ambassador Ambassador Deputy Permanent Representative Permanent Representative Head of delegation of the Head of delegation of the People 's Republic of China to the Russian Federation to the Conference on Disarmament Conference on Disarmament Annex Joint Chinese-Russian statement adopted on 10 December 1999 In the course of their second informal meeting , held in Beijing on 9 and 10 December 1999 , Mr. Jiang Zemin , President of the People 's Republic of China , and Mr. B. N. Yeltsin , President of the Russian Federation , held an in-depth exchange of views on questions of mutual interest . Afterwards , the two heads of State adopted the following statement : The two heads of State emphasize the importance and timeliness of the conclusions and assessments contained in the Russian-Chinese Joint Declaration on a Multipolar World and the Establishment of a New International Order of 23 April 1997 , the joint Russian-Chinese statement of 10 November 1997 , the joint statement on the results of the Russian-Chinese summit meeting on Russian-Chinese relations on the threshold of the twenty-first century , and the joint communiqué on the results of the Russian-Chinese summit meeting of 23 November 1998. The leaders of China and the Russian Federation reaffirm that they will strictly adhere to the principled approaches to international questions set forth in the above-mentioned documents . They advocate the establishment in the twenty-first century of a multipolar world based on the Charter of the United Nations and the applicable norms of international law , the strengthening of the leading role of the United Nations in international affairs , the peaceful settlement of international disputes by political means , equitable relations among all members of the international community and equal security for all , respect for each other 's choice of the path of development and each other 's sovereignty , non-interference in internal affairs and the creation of a just , equitable and mutually advantageous international political and economic order . The two sides appeal to all countries of the world to make concerted efforts for the creation of a democratic and balanced multipolar world structure in which the different cultures would exist harmoniously , cooperate constructively and enrich each other , and in which the equality of all sovereign States would be ensured . The two sides feel obliged to note the recent growth of unfavourable trends in the sphere of international security . The two sides consider that the creation , in violation of the Anti-Ballistic Missile Treaty of 1972 , of a national anti-ballistic-missile defence system by one of the States which signed that Treaty will have a destructive effect on strategic stability and on the entire structure of key international agreements relating to disarmament and the non-proliferation of weapons of mass destruction and means of their delivery , and will mar prospects for achieving further progress in these directions . The two sides reaffirm that they consider unacceptable any attempts to violate the Anti-Ballistic Missile Treaty of 1972 and emphasize that the Treaty has been and must remain a cornerstone of strategic stability . The two sides hold the view that the 1972 Treaty must be strictly and fully implemented . In this connection , the sides note in particular the importance of General Assembly resolution 54/54 A , of 1 December 1999 , entitled “ Preservation of and compliance with the Treaty on the Limitation of Anti-Ballistic Missile Systems ” , submitted by China , the Russian Federation and Belarus . The two sides point out that the plans of certain Governments to develop a regional anti-ballistic-missile defence system are liable to undermine peace and stability in the Asia and Pacific region . The Russian side supports the position of the Chinese side to the effect that the inclusion of the Chinese province of Taiwan in these plans in any form by any Government whatsoever is unacceptable . The two sides express deep regret over the refusal by the United States of America to ratify the Comprehensive Nuclear-Test-Ban Treaty . The two countries stress that they share identical or similar positions on a number of key issues , and this is a major prerequisite for joint or coordinated efforts to maintain strategic stability . These key issues include the prevention of an arms race in outer space or through the use of information technology , implementation of the treaty on the Non-Proliferation of Nuclear Weapons and the Chemical Weapons Convention , the elaboration of a protocol to the Biological Weapons Convention and the drafting of an agenda for the Conference on Disarmament . The Chinese side expresses its understanding of the position of the Russian side with regard to the further reduction of the strategic offensive weapons of the United States of America and the Russian Federation . The two sides consider that full responsibility for the consequences of any undermining of strategic stability and international security would rest with those States which caused the collapse of fundamental agreements in the field of disarmament . The sides maintain that , in the present situation , there is a growing need for close coordination of actions in the maintenance of global strategic stability . The two sides observe that certain adverse trends are increasingly discernible in international relations . These include the endeavour to foist on the international community a unipolar global structure and a single system of culture , values and ideology ; attempts to weaken the role of the United Nations and its Security Council ; the search for grounds to justify the irresponsible interpretation or revision of the fundamental contents and principles of the Charter of the United Nations ; the strengthening and expansion of military blocs ; the replacement of international law by pressure tactics and even the resort to military force ; the use of the concept which holds that “ human rights take precedence over sovereignty ” and of the theories of “ humanitarian intervention ” to infringe the sovereign rights of independent States . The two sides express their readiness , together with other countries , to oppose such trends , which prevent the establishment of an equitable , multipolar structure of international relationsIV The two sides emphasize that a major priority of the foreign-policy efforts of China and the Russian Federation is the affirmation of the leading role of the United Nations in world affairs . The two sides agree that the rational and carefully administered reform of the Organization will help to strengthen its authority and role . At the same time , the two sides express the conviction that the status and role of the Security Council , as the principal organ responsible for the maintenance of international peace and security , must under no circumstances be placed in doubt or weakened . The sides once again declare that the retention unchanged of the powers vested under the Charter in the existing permanent members of the Security Council is essential for maintaining the effectiveness and stability of the United Nations . China and the Russian Federation attach great importance to their admission to membership in the World Trade Organization ( WTO ) under conditions that would enable them to occupy an equitable and worthy place in the world-trade system , which would be in keeping with the interests of all members of that Organization . Negotiations on the admission of China and the Russian Federation into the WTO have reached a decisive stage . The two sides consider that the WTO should be universal in character and that , with regard to the conditions for the admission of new members , a balance should be maintained between rights and obligations , with consideration also being given to their level of socio-economic development . The two sides maintain that international terrorism , religious extremism and national separatism in all its forms , as well as transnational criminal activities ( such as illicit trafficking in arms , narcotic drugs and psychotropic and explosive substances , and economic offences ) have now become serious threats to the security of sovereign States and to international peace and security . The two sides reaffirm their determination to take practical , coordinated steps to combat those phenomena on both a bilateral and a multilateral basis . China and the Russian Federation express their satisfaction at the pace of implementation of the Bishkek Declaration , adopted by the heads of States members of the “ Shanghai Five ” ( the People 's Republic of China , the Republic of Kazakhstan , the Kyrgyz Republic , the Russian Federation and the Republic of Tajikistan ) on 25 August 1999 ( A/54/314-S/1999/942 , annex ) . The meeting of the senior law-enforcement officials of the five States held in Bishkek on 1 and 2 December 1999 was a significant practical step in that direction . The two sides consider that the meeting of ministers of defence of the countries of the “ Shanghai Five ” to be held in the year 2000 will be an important step towards implementing the agreements reached by the five heads of State . The two sides consider that the time is now ripe to begin preparations for a meeting of ministers for foreign affairs of the five States . The sides support the idea of conducting consultations among experts of the Five on questions of multilateral economic cooperation ( including cooperation in the transport field and in the extraction and transport of oil and gas ) . Such talks could become an important and integral part of preparations for a meeting of the heads of State of the People 's Republic of China , the Republic of Kazakhstan , the Kyrgyz Republic , the Russian Federation and the Republic of Tajikistan . The two sides underscore the need for the earliest possible resolution of the question of Iraq exclusively through political means in strict accordance with the norms of international law , in keeping with the central role of the Security Council and on the basis of the resolutions it has adopted . The resumption by Iraq of cooperation with the United Nations must be accompanied by the lifting of the economic sanctions imposed on that country . The two sides expressed serious concern about the development of the situation in and around Kosovo and the escalation of inter-ethnic tension in the region , particularly in connection with the unsatisfactory level of implementation of Security Council resolution 1244 ( 1999 ) and the growing trend towards separating Kosovo from the Federal Republic of Yugoslavia . China and the Russian Federation , as two permanent members of the Security Council , urge all interested parties to ensure the full and unconditional implementation of all provisions of resolution 1244 ( 1999 ) , full respect for the sovereignty and territorial integrity of the Federal Republic of Yugoslavia , the comprehensive and consistent observance of the Charter of the United Nations and of the universally recognized principles of international law , and respect for the legitimate rights of all nationalities in the Kosovo region . The two sides reaffirm their mutual support for the maintenance of each other 's national unity , sovereignty and territorial integrity . The Russian side , in supporting the important issue of the reunification of China , reaffirmed its position on the question of Taiwan set forth in earlier documents adopted jointly by the two sides , and declared that it could not accept affirmations that relations between the two sides situated on the opposing shores of the Taiwan Strait were “ relations between States ” . The Chinese side expressed satisfaction regarding the above-mentioned position of the Russian side . The Chinese side again declared that the Chechen problem was entirely an internal affair of the Russian Federation . The Chinese side supports the actions being taken by the Government of the Russian Federation to combat terrorist and separatist forces . The Russian side expressed satisfaction with regard to the above-mentioned position of the Chinese side . China and the Russian Federation , in pursuance of their goal of achieving an equitable and trusting strategic partnership , and also on the basis of the convergence or similarity of their positions both on questions of principle relating to the building of a multipolar , democratic and equitable world order and on specific current international problems , will strengthen cooperation in those directions . The cooperation of the two sides in international affairs is not directed against third countries ; rather , it is aimed at protecting their own fundamental national interests , but also at strengthening peace and stability in the Asia and Pacific region and throughout the world . Previously issued as document A/54/681-S/1999/1264 dated 20 December 1999. 