a:6:{i:0;s:26668:"				<div class="h1"><h1>Magnificent Himachal tour package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.northindiatravel.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.northindiatravel.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Magnificent Himachal tour package</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						10 Nights / 11 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Chandigarh City, Dalhousie, Khajjiar, Kufri, Kullu, Manali, Mandi, Shimla, Dharamshala, Amritsar</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.northindiatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Magnificent Himachal tour package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="54697"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_11/307359/105490.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_11/307359/105490.jpg"  width="150" height="150"    alt="Magnificent Himachal tour package" title="Magnificent Himachal tour package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Chandigarh to Shimla & Shimla to local Market Visit
								</p>
								<p class="aj">Pick up Chandigarh see Run Way Side Seen to move Shimla Hotel After Fresh Visit Shimla One of the most popular places to go to for shopping is at the Mall road in Shimla. This place is the shopping hub and commercial center of Shimla, local side seen the Shimla. All Local side seen , National Park Poney and Yak Ride and One can see the endless Himalayan One can finds mall Souvenirs and knick- knacks here along handicrafts and other artifacts that Shimla is famous for.You can buy the famous Himachali caps that are available in almost any Project, Pandoh dam local. The Ridge that lies along the famous Mall Road is the main venue of all the cultural activities in the town. Being the most popular shopping center in the city, Shimla Ridge links the most important commercial spots such as Lakkar Bazaar, The Mall, Scandal Point, Jakhoo Hill, among others. The Ridge is home to numerous Shimla's landmarks built in Neo-Gothic style that are a must for sightseeing in Shimla. The place is host to the famous Shimla Summer festival that goes on for 5 days and invites travelers from all corners of the world. The festival showcases different performances by local and national artists. Christ Church is the second oldest church in Northern India Night Shimla.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Shimla to Kufri & Local Visit
								</p>
								<p class="aj">Morning After Breakfast Visit,. Kufri is famous for its Himalayan Panorama from Kufri, explore the various places in and around Shimla. Lying just 24 km from Shimla Mall Road, Shilon Bagh houses outstanding resorts. From here you can access easily a fabulous tourist destination Kufri, situated at (2,633 meters in height) 16 km far from Shimla. The region is an epitome of serenity and tranquility that embraces the most pristine and breathtaking environs. The region is highly visited for its awe-inspiring beauty that is the love of every backpacker who wishes to rejoice amidst the most natural environs of Shimla. Apart from this, the region offers some of the finest accommodation facilities to travelers to make sure they enjoy the most empyrean luxury and comfort. Another tourist attraction Jakhu Hill is located<br />
just 2 km away from Shimla. Lying at a height of 8000 ft, Jakhu Hill has the highest peak of this hill station, offering an amusing view of Shimla and also the snow-clad Himalayas. The Jakhu Hill is also home to the famous Jakhu temple, which is located the hill comprises a large statue of Lord Hanuman that stands at an elevation of 2,455 m (8,000 feet) above sea level and is one of its kind to be situated at such great height. Dedicated to Lord Hanuman, The temple is one of the most pious places in Shimla that is visited by numerous travelers. Visit Local side Seen Night Shimla</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Shimla Local Market Visit to Kullu to Mandi to Manali
								</p>
								<p class="aj">Morning After Breakfast Check Out Hotel see Run way Side Seen to Kullu According to ancient Hindu scriptures, the area was known as ‘Kulantapitha’ the end of the habitable world. Nestling within the high Himalayan ranges, the Kullu valley remained isolated from the rest of the world till very recently. The Hindu rulers of Kullu initially ruled over an area restricted to the upper Beas River valley, with their capital in the ancient village of Jagatsukh near Manali. The valley was a gateway to Lahaul and Ladakh andan important stop on the crucial trade route between central Asia and the Gangetic Plains down south. This made the area prosperous and by the 17th century AD, the kingdom had expanded its boundaries to Lahaul-Spiti in the north and the Sutlej River in the east. The capital of the kingdom was first shifted to Naggar, then to Sultanpur before finally settling at Kullu. Kullu grew into an important town when Raja Jagat Singh shifted the capital of the kingdom from Naggar in the mid-17th century. The idol of Lord Raghunathji (Lord Rama, an incarnation of Vishnu, one of the gods in the Hindu trinity), the presiding deity of this town, was brought from his mythical birthplace in Ayodhya by the king. Declared the district headquarters after independence, Kullu is now an important market town for the region, and a transit point for travellers going on to the more popular Manali, 40 kms north. Kullu is also the focal point for trekkers into the Parvati valley and the Pin valley & Then See Run Way Side Seen To Move to Mandi The present District Of Mandi was formed with the merger of two princely states Mandi and Suket on 15th April 1948, when the State of Himachal Pradesh came into existence. Ever since the formation of the district, it has not witnessed any changes in it's jurisdiction., Mandi local Market visit & Then See Run Way Side Seen to go Manali Manali is situated near the end of the valley on the National Highway leading to Leh. The landscape here is breath taking. One sees well-defined snow capped peaks, the Beas river with its clear water meanders through the town. On the other side are Deodar and pine trees, tiny fields and fruit orchards. It is an excellent place for a holiday, a favorite resort for trekkers to Lahaul, Spiti, Bara Bhangal, and Zanskar ranges Night Manali</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Manali to Rohtang pass Visit
								</p>
								<p class="aj">Morning move to Rohtang pass, gateway to Lahaul-Spiti valley. It affords a wide panoramic view of the mountains. Here one sees the majesty of the mountains at its height and splendour. At the top of the pass the air seems to glitter against the snow as you look down over herring boned ridges into the Lahaul valley. Rohtang pass and enjoy the hight, back Manali visit Manali local market, Free time for shopping or leisure activities. Enjoy get together with your travel companions in the evening.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Manali Local side seen Visit & Local Market Visit
								</p>
								<p class="aj">see local Manali like Hadimba temple, Manu temple ,Vashisht Bath, Van Vihar,,,,see run way side seen Manali is situated near the end of the valley on the National Highway leading to Leh. The landscape here is breath taking. One sees well-defined snow capped peaks, the Beas river with its clear water meanders through the town. On the other side are deodar and pine trees, tiny fields and fruit orchards. It is an excellent place for a holiday, a favorite resort for trekkers to Lahaul, Spiti, Bara Bhangal, and Zanskar ranges. From temples to antiquity, to picturesque sight-seeing spots and adventure activities, Manali is a popular resort for all seasons and for all travellers visit,,,,see run way side seen Manali is situated near the end of the valley on the National Highway leading to Leh. The landscape here is breath taking. One sees well-defined snow capped peaks, the Beas river with its clear water meanders through the town. On the other side are deodar and pine trees, tiny fields and fruit orchards. It is an excellent place for a holiday, a favorite resort for trekkers to Lahaul, Spiti, Bara Bhangal (Kangra), and Zanskar ranges. From temples to antiquity, to picturesque sight-seeing spots and adventure activities, Manali is a popular resort for all seasons and for all travelers Explore the beautiful surrounding of Manali. Enjoy thrills of Water Rafting in Beas river (subject to operation). Free time for shopping or leisure activities. Enjoy get together with your travel companions in the evening. See local side seen and local market. Night Manali</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Manali to Manikaran To Dharamsala Local Market Visit
								</p>
								<p class="aj">Morning After Breakfast Check Out Hotel See run Way Side Seen To visit Manikaran , is famous for its hot springs. Thousands of people take a holy dip in hot waters here. The water is so hot that dal, rice & vegetables etc. can be cooked in it. It is also a well known pilgrimage place for both Hindus & Sikhs. Ramchandra and Shivaji temples besides a Gurudwara are there. According to an old legend, Manikaran is connected with Lord Shiva and his divine consort, Parvati, who lost her ear rings here, which gave birth to hot waters on the bank of Parvati river Manikaran is a pilgrimage centre for Hindus and Sikhs. The Hindus believe that Manu recreated human life in Manikaran after the flood, making it a sacred area. It has many temples and a Gurudwara.[1] There are temples of the Hindu deities Rama, Krishna, and Vishnu.[2] The area is well known for its hot springs[3] and its beautiful landscape. After This Visit See Run Way Side Seen to Move Dharamshala, popularly known as the ‘Queen of the Hills’, is divided into lower and upper towns with a difference of 457m(1500ft.) between them. The mountains enfold 3 sides of the town and the valley stretches to the south. There is a beautiful resort of Dharamshala, which stands on the spur of the Dharamshala range. Visit Local market Visit Night Dharamshala.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Dharamsala to Naddi To Mc Leod Ganj 
								</p>
								<p class="aj">Morning After Breakfast See Run Way Side Seen To Move Naddi Naddi Local Visit After This Visit Mc Leod Ganj . The arrival of the Tibetan spiritual leader, the Dalai Lama, along with thousands of refugees to Dharamshala in 1959 made the life here more active. number of tibetan settlements with religious education and other rehabilitation centers mushroomed all over the Mc Leod Ganj. As Dharamshala became the headquarter of the Tibetan Government in exile, headed by Dalai Lama, it gained prominence all over the world and prominent personalities started arriving here. Mc leod Ganj emerged as a major Buddhist centre.,After This Visit See Run Way Side Seen To Move Dalhousie. Dalhousie has been named after the British Governor - General of the l9th century,Lord Dalhousie. Surrounded by varied vegetation - pines, dodders, oaks and flower in.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Dharamsala To Dalhousie Local Market Visit & Local Side Seen Visit
								</p>
								<p class="aj">Early Morning After Breakfast Check Out Hotel See Run Way Side Seen To Move Dalhousie. Dalhousie has been named after the British Governor - General of the l9th century,Lord Dalhousie. Surrounded by varied vegetation - pines, dodders, oaks and flowering oaks and flowering rhododendronlakad bagar Gandhi chonk local market, Dalhousie Churche.<br />
<br />
St. Andrew's Church:<br />
St. Andrew's Church was built in the year 1903 at baloon by protestant Christians and commonly known as the Church of Scotland.<br />
<br />
St. Jonh's Church:<br />
The church is approximately 2 km from the main bus stand and it stands on the Gandhi chowk. Rev. John H. Pratt came to Dalhousie in 1863 and inspired the Christian community to build a permanent church building<br />
at this place.<br />
<br />
Kala Top<br />
The wildlife reserves, provides shelter to various species of flora and fauna. Kala top is a pleasant getaway, only 5 km from Dalhousie, with a panoramic view and a forest rest house. Kala Top is situated at an altitude of 8000 ft and 10 km away from G.P.O jquare. It has a variety of wildlife such as Deer, Bears & Leopards. Night Dalhousie</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 9:</b> Dalhousie Local To Khajjiar
								</p>
								<p class="aj">Morning After Breakfast Visit Local<br />
Dainkund:<br />
Dainkund is only 10 km. one can enjoy the beautiful view of the hills, with the rivers Ravi, Beas and chenab threading through the distance. A Devi Temple is also situated on the hill Bara Pathar (4 km) There is a small temple amidst a thick forest. Kalatop(10 km) This wild life sanctuary is home to the 'ghoral' and Himalayan black bear After This Visit Move Khajjiar "Khajjiar is a forest glade of great beauty, 6400 feet above sea level". Khajjiar is often reffered to as "Gulmarg of Himachal Pradesh". The lush green meadows are surrounded by thick pine and cedar forests. Grazing herds of sheep, goats and other milch cattle present a prefect pastoral scenery. There is a small lake in the center of the saucer shaped meadow which has in it a floating island. Much of the lake has degenerated into slush because of heavy silting during rains. Still the landscape of Khajjiar is picturesque and a photographer's delight. A little away from the lake is the temple of Khajji Nag belonging to 12th C. AD. In the mandapa of the temple one can see the images of the Pandavas and the defeated Kaurvas hanging from the roof of the circumambulatory path. The sanctum of the temple has been beautifully carved from wood On 07-07-1992, Mr. Willy t. Blazer, Vice Counselor and Head of Chancery of Switzerland in India brought Khajjiar on the world tourism map by christening it "Mini Switzerlan". He also put a sign board of a yellow Swiss hiking footpath showing Khajjiar's distance from the Swiss capital Berne-6194 kms. Khajjiar is among the 160 locations in the world that bear topographical resemblance with Switzerland. The Counselor also took from Khajjiar a stone which will form part of a stone collage around the Swiss Parliament to remind the visitors of Khajjiar as Mini Switzerland of India.Night Dalhousie</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 10:</b> Dalhousie to Amritsar & Wagah Border Visit
								</p>
								<p class="aj">Morning After Breakfast Check Out hotel Visit See Run Way Side Seen To Move Amritsar Evening Time Visit Wagah Border in Amritsar between Pakistan and India is the only road border between the two countries. It lies on the Grand Trunk Road between the cities of Amritsar, Punjab, India, and Lahore, Punjab, Pakistan. The border is located 22 km from Lahore and 28 km from Amritsar. Apart from its national significance it is visited with great patriotism and enthusiasm for the ceremony that happens every day before sunset. The highlight is lowering of the flags of the two countries simultaneously. The flags are folded and the ceremony ends with a gesture that involves a brusque handshake between soldiers from either side which is followed by the closing of the gates. The spectacle of the ceremony attracts many visitors from both sides of the border, as well as international tourists for its high energy and enthusiastic ceremonial practice. This checkpoint at Wagah Border in Amritsar draws plenty of global attention and affords a stage for Indian and Pakistani paramilitary<br />
forces to strut their tough stuff. Each sunset, there are noisy partisan crowds cheering on the BSF and the Rangers as they present arms with much stage managed, in-your-face ceremony, each side trying to outdo the other. On special occasions, liberals on both sides take out candle-lit processions.<br />
<br />
Golden Temple Night View. Amritsar is one of Punjab´s principal cities, dating back in history over 400 years. It is known more for the world famous Golden Temple, the seat of Sikh religion.Situated on the north-western border of India, the city is also gateway for the travelers on the overland route through Pakistan. The Wagah border, which is the check-post is about 29 kms away. Amritsar literally means "the pool of nectar", the name derived from a pool constructed at the sacred site in the 16th century, gifted by the Mughal Emperor Akbar to Guru Ramdas, the fourth preceptor of the Sikh faith. Under instructions from Guru Amar Das Sahib, this city was founded by Guru Ram Das Sahib in 1574, on the land bought by him for an amount of rupees 700 from the owners of the village Tung. (Earlier Guru Ram Das Sahib had begun building Santokhsar Sarovar, near erstwhile village of Sultanwind in 1564 {according to one source in 1570}. It could not be completed before 1588). In 1574, Guru Ram Das Sahib built his residence and moved to this place. At that time, it was known as<br />
Guru-Da-Chakk. (Later, it came to be known as Chakk Ram Das). Guru Ram Das Sahib began excavation of the Amritsar Sarovar (tank) in 1577. It was ready by 1581. This tank was renovated by Guru Arjun Sahib in<br />
1586. Since then this city is known as Amritsar (after the name of the Sarovar). The foundation of the Darbar Sahib had been laid by Guru Arjan Sahib on January 3, 1588. (Later, it was propagated that the foundation stone of Darbar Sahib was laid by Sain Mian Mir, a Muslim holy man. Sain Mian Mir was very friendly with Guru Sahib but the foundation of Darbar Sahib was laid by Guru Sahib himself). In 1590, Guru Arjan Sahib moved to village Wadali where Guru Hargobind Sahib was born on June 19, 1590. By 1601, the Darbar Sahib was fully ready. In 1603-04, the first volume of Guru Granth Sahib, the Sikh scriptures, was prepared in this city and was installed at Darbar Sahib on August 16, 1604.It is here that Akal Takht Sahib (Throne of the Almighty) was revealed by Guru Hargobind Sahib in 1609. Two flags representing temporal and spiritual authority (Sikh sovereignty) have been set up in front of Akal Takht Sahib. Here Guru Hargobind Sahib wore two swords of Miri and Piri (temporal and transcendental authority). The building of Akal Takht Sahib was twice demolished by Afghan armies and was very badly damaged by the Indian regime (in June 1984). The Indian government repaired in in September 1984. The Sikhs began demolishing it on January 26, 1986. The present structure has<br />
been constructed by five service-groups headed by Baba Thakar Singh of Bhindran-Mehta Jatha. On April 13, 1634, the Mogul army attacked Guru Hargobind Sahib here. From 1635 to 1698, Amritsar remained in the control of the Mina family (descendants of Pirthi Chand). During this period, on November 23, 1664, Guru Tegh Bahadur Sahib visited the town. In April 1698, Bhai Mani Singh was appointed as the caretaker of the shrines of Amritsar. Night Hotel</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Amritsar Local To Drop Chandigarh
									</p>
									<p class="aj">Early Morning After Breakfast Visit "Jallianwala Bagh", is a public garden in Amritsar in the Punjab state of India, and houses a memorial of national importance, established in 1951 by the Government of India, to commemorate the massacre by British occupying forces of peaceful celebrators including unarmed women and children, on the occasion of the Punjabi New Year on April 13, 1919 in the Jallianwala Bagh Massacre. Colonial British Raj sources identified 379 fatalities and estimated about 1100 wounded.[1] Civil Surgeon Dr. Smith indicated that there were 1,526 casualties.[2] The true figures of fatalities are unknown, but are likely to be many times higher than the official figure of 379. The 6.5-acre (26,000 m2) garden site of the massacre is located in the vicinity of Golden Temple complex, the holiest shrine of Sikhism.The memorial is managed by the Jallianwala Bagh National Memorial Trust, which was established as per the Jallianwala Bagh National Memorial Act passed by the Government of India in 1951 Local Market Visit. to Seen Run Way Side Seen to drop Chandigarh</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount * Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. * Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.northindiatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Magnificent Himachal tour package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="54697"/>
						</form>
						</div>
						
						";i:1;s:63:"Book Magnificent Himachal tour package - 111 Days Tour Packages";i:2;s:208:"book magnificent himachal tour package - 111 days tour packages, forts and palaces tour packages, chandigarh city, dalhousie, khajjiar, kufri, kullu, manali, mandi, shimla, dharamshala, amritsar tour packages";i:3;s:240:"MD Tour Travels offers Magnificent Himachal tour package - 111 Days tour package, budget Forts and Palaces tour packages for Chandigarh City, Dalhousie, Khajjiar, Kufri, Kullu, Manali, Mandi, Shimla, Dharamshala, Amritsar at exciting price.";i:4;s:501:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Chandigarh City, Dalhousie, Khajjiar, Kufri, Kullu, Manali, Mandi, Shimla, Dharamshala, Amritsar"        
		                 },
		      "description": "",
		      "name": "Magnificent Himachal tour package",
		      "telephone": "+91-9646469331"
		    }
		    </script>
			";i:5;N;}