a:6:{i:0;s:14752:"				<div class="h1"><h1>Sweet Shimla & Manali 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>Sweet Shimla & Manali 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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Chandigarh City, Kufri, Kullu, Manali, Mandi, Shimla</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="Sweet Shimla & Manali 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="54691"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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/105479.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_11/307359/105479.jpg"  width="150" height="150"    alt="Sweet Shimla & Manali Tour Package" title="Sweet Shimla & Manali Tour Package" /></a></p></div></li>
																		<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/105477.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_11/307359/105477.jpg"  width="150" height="150"    alt="Sweet Shimla & Manali Tour Package" title="Sweet Shimla & Manali 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 Local Market Visit
								</p>
								<p class="aj">Pick up Chandigarh Railway station & Drop Kalka Station & Again Pick Shimla Railway station. Then Go Shimla Hotel After Fresh Visit, Local market 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 see the Shimla. All Local side seen, National Park Poney and Yak Ride and One can see the endless Himalayan One can find small 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, Jakhu 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 See Run way Side Seen to Move 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 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. 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 Shopping to Kullu to Mandi to Manali
								</p>
								<p class="aj">Morning Post Breakfast Check out Hotel Shopping local market to 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 witnessd any changes in it's jurisdiction., Mandi local Market visit & Then See Run Way Side Seen to go Manali see Run way Side Seen to Kullu to Mandi, Mandi local Market visit & Then Move 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 range<br />
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 & Manali Local Side Seen 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 herringboned ridges into the Lahaul valley local Manali like Hidimba 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 travelers 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 a excellent place for a holiday, a favorite resort for trekkers to Lahaul, Spiti, Bara Bhangal (Kangra), and Zanskar ranges. From temples to antiquity, to picture sight-seeing spots and adventure activities, Manali is a popular resort for all season and for all travelers Explore the beautiful surrounding of 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 5:</b> Manali to Manikaran to Drop Chandigarh
								</p>
								<p class="aj">Morning After Breakfast Check Out hotel See Run way Side Seen to Visit Manikaran, 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 Shiva 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 See Run Way Side Seen To Drop Chandigarh</p>
								</td>
								</tr>
								</table>					
								</div>						<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="Sweet Shimla & Manali 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="54691"/>
						</form>
						</div>
						
						";i:1;s:73:"Book Sweet Shimla & Manali Tour Package - 4 Nights / 5 Days Tour Packages";i:2;s:163:"book sweet shimla & manali tour package - 4 nights / 5 days tour packages, valley tour packages, chandigarh city, kufri, kullu, manali, mandi, shimla tour packages";i:3;s:195:"MD Tour Travels offers Sweet Shimla & Manali Tour Package - 4 Nights / 5 Days tour package, budget Valley tour packages for Chandigarh City, Kufri, Kullu, Manali, Mandi, Shimla at exciting price.";i:4;s:458:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Chandigarh City, Kufri, Kullu, Manali, Mandi, Shimla"        
		                 },
		      "description": "",
		      "name": "Sweet Shimla & Manali Tour Package",
		      "telephone": "+91-9646469331"
		    }
		    </script>
			";i:5;N;}